Portada

Fijación ordinaria de comisiones máximas del sistema de tarjetas de pago 2025

División Económica y División Sistemas de Pago, BCCR

Noviembre 2025

1 Introducción

Este código permite replicar las estimaciones del documento “Fijación ordinaria de comisiones máximas del sistema de tarjetas de pago”.

Como modelo principal, mediante una regresión lineal múltiple (MRL) se estiman los valores esperados para Costa Rica, dadas las características observables. En la selección del modelo se consideraron distintas combinaciones de variables de control, y se utilizó el criterio de información de Akaike con una corrección para tamaños de muestra pequeños (AICc) y el criterio de información bayesiana (BIC).

Posteriormente, se presenta un análisis de robustez a estimaciones alternativas, que considera los siguientes modelos:

  • Modelos de regresión truncados (MRT)
  • Modelo con transformación logarítmica de la variable dependiente (MTL)
  • Modelo con inclusión de efectos no lineales en la regresión (MENL)
  • Método bootstrap (MB)
  • Método de regresión robusta (MRR)
  • Modelo de regresión lineal omitiendo al Espacio Económico Europeo (MOEEE)
  • Modelo de regresión lineal restringiendo la muestra a países regulados (MPR)
  • Modelo de regresión lineal que amplía la definición de regulación (MADR)
  • Modelo de regresión lineal que utiliza las características observadas más recientes para cada país (MCR)
  • Modelo de regresión lineal con variables propuestas por el FMI (MFMI)
  • Modelo de regresión lineal sin variables relacionadas al uso de tarjetas (MSVR)
  • Modelo de regresión lineal con variables instrumentales (MVI)
  • Modelo de panel de datos con efectos aleatorios (MPDEA)

2 Datos

El conjunto de datos contiene 236 observaciones y 42 variables.

El total de países en la muestra sin considerar a Costa Rica es 75.

Características de las variables:

str(datos)
## tibble [236 × 42] (S3: tbl_df/tbl/data.frame)
##  $ Pais                  : chr [1:236] "ALBANIA" "ANDORRA" "ANDORRA" "EMIRATOS ÁRABES UNIDOS" ...
##  $ Codigo_Pais           : chr [1:236] "ALB" "AND" "AND" "ARE" ...
##  $ Año                   : num [1:236] 2020 2020 2021 2021 2016 ...
##  $ Intercambio           : num [1:236] 1.4 0.8 0.3 1.13 2.85 2 1.85 1.65 1.5 1.3 ...
##  $ Adquirencia           : num [1:236] 2.55 NA NA NA 3 2.5 2.35 2.15 2 1.8 ...
##  $ Regulacion_intercambio: num [1:236] 0 0 1 0 0 1 1 1 1 1 ...
##  $ Regulacion_adquirencia: num [1:236] 0 0 0 0 1 1 1 1 1 1 ...
##  $ Cajero_Autom          : num [1:236] 31.1 NA NA 55.3 60.6 ...
##  $ Crimen                : num [1:236] 110.1 1560.1 1560.1 58.8 615.3 ...
##  $ Cuenta                : num [1:236] 44.2 NA NA 85.7 48.7 ...
##  $ Pago_digital          : num [1:236] 14 NA NA 74.8 31.9 ...
##  $ Debito                : num [1:236] 27 NA NA 68.8 41.4 ...
##  $ Credito               : num [1:236] 4.94 NA NA 26.84 23.97 ...
##  $ Densidad_Pob          : num [1:236] 104 165 167 135 16 ...
##  $ Densidad_Neg          : num [1:236] 1.43 NA NA 2.46 0.21 ...
##  $ PIB_pc_PPA            : num [1:236] 14663 55488 59332 67401 27802 ...
##  $ ICH                   : num [1:236] 0.634 NA NA 0.673 0.611 ...
##  $ Concentracion_bancaria: num [1:236] 72.4 92.3 92.3 73.2 52.5 ...
##  $ Margen_neto           : num [1:236] 3.206 0.926 0.926 2.019 10.241 ...
##  $ Valor_prom            : num [1:236] 192.7 NA NA NA 76.2 ...
##  $ Europa                : num [1:236] 1 1 1 0 0 0 0 0 0 0 ...
##  $ Asia_Este             : num [1:236] 0 0 0 0 0 0 0 0 0 0 ...
##  $ Am_lat                : num [1:236] 0 0 0 0 1 1 1 1 1 1 ...
##  $ OCDE                  : num [1:236] 0 0 0 0 0 0 0 0 0 0 ...
##  $ EEE                   : num [1:236] 0 0 0 0 0 0 0 0 0 0 ...
##  $ Año_2010              : num [1:236] 0 0 0 0 0 0 0 0 0 0 ...
##  $ Año_2011              : num [1:236] 0 0 0 0 0 0 0 0 0 0 ...
##  $ Año_2012              : num [1:236] 0 0 0 0 0 0 0 0 0 0 ...
##  $ Año_2013              : num [1:236] 0 0 0 0 0 0 0 0 0 0 ...
##  $ Año_2014              : num [1:236] 0 0 0 0 0 0 0 0 0 0 ...
##  $ Año_2015              : num [1:236] 0 0 0 0 0 0 0 0 0 0 ...
##  $ Año_2016              : num [1:236] 0 0 0 0 1 0 0 0 0 0 ...
##  $ Año_2017              : num [1:236] 0 0 0 0 0 1 0 0 0 0 ...
##  $ Año_2018              : num [1:236] 0 0 0 0 0 0 1 0 0 0 ...
##  $ Año_2019              : num [1:236] 0 0 0 0 0 0 0 1 0 0 ...
##  $ Año_2020              : num [1:236] 1 1 0 0 0 0 0 0 1 0 ...
##  $ Año_2021              : num [1:236] 0 0 1 1 0 0 0 0 0 1 ...
##  $ Año_2022              : num [1:236] 0 0 0 0 0 0 0 0 0 0 ...
##  $ Año_2023              : num [1:236] 0 0 0 0 0 0 0 0 0 0 ...
##  $ Año_2024              : num [1:236] 0 0 0 0 0 0 0 0 0 0 ...
##  $ Año_2025              : num [1:236] 0 0 0 0 0 0 0 0 0 0 ...
##  $ Dato_mas_reciente     : num [1:236] 1 0 1 1 0 0 0 0 0 1 ...

Países miembros de la OCDE dentro de la muestra:

tabla_ocde
País pertenece a la OCDE Frecuencia Porcentaje Acumulado
0 38 50.67 50.67
1 37 49.33 100
Total 75 100

Países dentro de la muestra con regulación de la comisión de intercambio:

tabla_int
Regulación en intercambio Frecuencia Porcentaje Acumulado
0 21 28 28
1 54 72 100
Total 75 100

Países dentro de la muestra con regulación de la comisión de adquirencia:

tabla_adq
Regulación en adquirencia Frecuencia Porcentaje Acumulado
0 68 90.67 90.67
1 7 9.33 100
Total 75 100

3 Comisión de intercambio

3.1 Estimación principal

Se estima una regresión lineal múltiple (MRL). A partir de los coeficientes estimados y las características observables para Costa Rica, se calcula la comisión de intercambio esperada para el país. Se calculan 5 modelos:

  • MRL_sc: estima una regresión lineal sin variables de control; únicamente se incluye la variable dicotómica que indica si el país cuenta con regulación.
  • MRL_aicc: corresponde a los resultados obtenidos con el criterio de información de Akaike (AICc) con una corrección para tamaños de muestra pequeñas.
  • MRL_bic: incluye las estimaciones al controlar por las variables seleccionadas mediante el criterio de información bayesiano (BIC).
  • MRL_aicc_et: incluyen efectos fijos de tiempo en las regresiones, para el modelo MRL_aicc.
  • MRL_bic_et: incluyen efectos fijos de tiempo en las regresiones, para el modelo MRL_bic.

El total de países con información sobre intercambio es 70.

3.1.1 Definiciones

# Variables de control
controles <- c("Cajero_Autom", "Crimen", "Cuenta", "Credito", "Debito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Pago_digital", "Valor_prom", "Europa", "Asia_Este", "Am_lat")

# Efectos fijos de tiempo
ef_tiempo <- c("Año_2013", "Año_2014", "Año_2015", "Año_2016", "Año_2017", "Año_2018", "Año_2019", "Año_2020", "Año_2021", "Año_2022", "Año_2023", "Año_2024", "Año_2025")

# Fórmula que incluye las variables de control
formula_con_cont <- as.formula(
  paste("Intercambio ~ Regulacion_intercambio +", paste(controles, collapse = " + "))
)

# Fórmula que incluye las variables de control y los efectos fijos de tiempo
formula_con_cont_t <- as.formula(
  paste("Intercambio ~ Regulacion_intercambio +", paste(controles, collapse = " + ")," + ", paste(ef_tiempo, collapse = " + "))
)

# Variables fijas para los modelos con efectos de tiempo
variables_fijas <- c("Regulacion_intercambio", paste0("Año_", 2010:2025))

# Definir el conjuntos de datos para los modelos con variables de control
variables_constantes <- c("Pais", "Codigo_Pais", "Año", "Intercambio", "Regulacion_intercambio")
variables_interes <- c(variables_constantes, controles, ef_tiempo)

datos_int_con_cont <- datos %>%
  select(all_of(variables_interes)) %>%
  na.omit()

Variables de control: [1] “Cajero_Autom” “Crimen” “Cuenta” “Credito” “Debito”
[6] “Densidad_Pob” “Densidad_Neg” “PIB_pc_PPA” “ICH” “Pago_digital”
[11] “Valor_prom” “Europa” “Asia_Este” “Am_lat” .

Efectos fijos de tiempo: [1] “Año_2013” “Año_2014” “Año_2015” “Año_2016” “Año_2017” “Año_2018”
[7] “Año_2019” “Año_2020” “Año_2021” “Año_2022” “Año_2023” “Año_2024”
[13] “Año_2025”.

3.1.2 MRL_sc

Regresión lineal sin variables de control.

3.1.2.1 Estimación

#Remover NA's de la columna "Intercambio" y dejar los demás.
datos_int_sin_cont <- datos %>% 
  filter(!is.na(Intercambio))

MRL_sc <- lm(Intercambio ~ Regulacion_intercambio, datos_int_sin_cont)

# Errores robustos
MRL_sc_corr_hc <- coeftest(MRL_sc, vcov. = vcovHC(MRL_sc, "HC1", adjust = TRUE, sandwich = TRUE))

MRL_sc_corr_hac <- coeftest(MRL_sc, vcov. = vcovHAC(MRL_sc, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(MRL_sc, MRL_sc_corr_hc, type = "html", 
          title = "Estimación principal - Modelo sin variables de control", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
Estimación principal - Modelo sin variables de control
Variable dependiente
Tasa intercambio Tasa intercambio
MCO MCO HC
(1) (2)
Regulacion_intercambio -0.678*** -0.678***
(0.066) (0.066)
Constant 1.395*** 1.395***
(0.049) (0.051)
Observations 213
R2 0.335
Adjusted R2 0.332
Residual Std. Error 0.477 (df = 211)
F Statistic 106.446*** (df = 1; 211)
Note: p<0.1; p<0.05; p<0.01

3.1.2.2 Pruebas estadísticas

#Prueba de normalidad
residuos_MRL_sc <- resid(MRL_sc) #Se guardan los residuos
jarque.test(residuos_MRL_sc) #Se computa la prueba con la función Nula: distribución normal residuos
## 
##  Jarque-Bera Normality Test
## 
## data:  residuos_MRL_sc
## JB = 15.206, p-value = 0.000499
## alternative hypothesis: greater
car::qqPlot(MRL_sc)

## [1] 5 6
#Test de White sobre el modelo original. Hipótesis nula: homocedasticidad
white(MRL_sc, interactions = TRUE)
statistic p.value parameter method alternative
0.8798728 0.6440774 2 White’s Test greater

3.1.2.3 Predicción

#Pronóstico para CR
data_CR <- datos
data_CR[ which(datos$Codigo_Pais=="CRI"), which(names(datos)=="Regulacion_intercambio") ]<-1
pred_int_MRL_sc<-predict(MRL_sc, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de intercambio para Costa Rica: 0.7172034.

3.1.3 MRL_aicc

Regresión lineal con variables de control, sin efectos fijos de tiempo. Utiliza el criterio de información de Akaike (AICc) con una corrección para tamaños de muestra pequeñas.

3.1.3.1 Estimación

# Ajustar el modelo
modelo_completo <- lm(formula_con_cont, data = datos_int_con_cont)

# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MRL_aicc <- dredge(modelo_completo, rank = "AICc", fixed = "Regulacion_intercambio")

# Extraer el mejor modelo según AICc
MRL_aicc <- get.models(MRL_aicc, 1)[[1]]
MRL_aicc

Call: lm(formula = Intercambio ~ Am_lat + Asia_Este + Cajero_Autom + Credito + Cuenta + 1 + Regulacion_intercambio, data = datos_int_con_cont)

Coefficients: (Intercept) Am_lat Asia_Este
1.957044 0.478587 0.453342
Cajero_Autom Credito Cuenta
0.002053 0.003679 -0.013565
Regulacion_intercambio
-0.597227

# Errores robustos
MRL_aicc_corr_hc <- coeftest(MRL_aicc, vcov. = vcovHC(MRL_aicc, "HC1", adjust = TRUE, sandwich = TRUE))

MRL_aicc_corr_hac <- coeftest(MRL_aicc, vcov. = vcovHAC(MRL_aicc, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(MRL_aicc, MRL_aicc_corr_hc,
          type = "html", 
          title = "Estimación principal - Modelo AICc sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F,
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
Estimación principal - Modelo AICc sin efectos fijos de tiempo
Variable dependiente
Tasa intercambio Tasa intercambio
MCO MCO HC
(1) (2)
Am_lat 0.479*** 0.479***
(0.076) (0.084)
Asia_Este 0.453*** 0.453***
(0.082) (0.077)
Cajero_Autom 0.002** 0.002**
(0.001) (0.001)
Credito 0.004* 0.004*
(0.002) (0.002)
Cuenta -0.014*** -0.014***
(0.002) (0.002)
Regulacion_intercambio -0.597*** -0.597***
(0.053) (0.061)
Constant 1.957*** 1.957***
(0.173) (0.192)
Observations 165
R2 0.744
Adjusted R2 0.735
Residual Std. Error 0.310 (df = 158)
F Statistic 76.618*** (df = 6; 158)
Note: p<0.1; p<0.05; p<0.01

3.1.3.2 Pruebas estadísticas

#Prueba de normalidad

residuos_MRL_aicc <- resid(MRL_aicc) #Se guardan los residuos
jarque.test(residuos_MRL_aicc) #Se computa la prueba con la función Nula: distribución normal residuos
## 
##  Jarque-Bera Normality Test
## 
## data:  residuos_MRL_aicc
## JB = 23.92, p-value = 6.395e-06
## alternative hypothesis: greater
car::qqPlot(MRL_aicc)

## [1] 21 98
#Se obtiene el resultado del índice de condición de multicolinealidad
#create vector of VIF values
print("El VIF del modelo es:")
## [1] "El VIF del modelo es:"
vif(MRL_aicc)
##                 Am_lat              Asia_Este           Cajero_Autom 
##               1.967779               1.106949               1.577908 
##                Credito                 Cuenta Regulacion_intercambio 
##               3.052921               3.439112               1.145879
#Se ejecuta el test de White sobre el modelo original Nula: homocedasticidad
#white_lm(modelo_int_con_cont_aicc, interactions = TRUE)
white(MRL_aicc, interactions = TRUE)
statistic p.value parameter method alternative
41.34095 0.0381799 27 White’s Test greater
plot(MRL_aicc$fit,MRL_aicc$res,xlab="Valores ajustados",ylab="Residuales")

#Prueba de especificación lineal RESET Nula: especificación correcta lineal
resettest(MRL_aicc, power = 2:3, type = c("fitted"), data = datos_int_con_cont, vcov = vcovHC) #Corregido por heterocedasticidad)
## 
##  RESET test
## 
## data:  MRL_aicc
## RESET = 1.1604, df1 = 2, df2 = 158, p-value = 0.316

3.1.3.3 Predicción

#Pronóstico para CR
pred_int_MRL_aicc <- predict(MRL_aicc, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de intercambio para Costa Rica: 1.0580836.

3.1.4 MRL_bic

Regresión lineal con variables de control, sin efectos fijos de tiempo. Utiliza el criterio de información bayesiana (BIC).

3.1.4.1 Estimación

# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MRL_bic <- dredge(modelo_completo, rank = "BIC", fixed = "Regulacion_intercambio")

# Extraer el mejor modelo según AICc
MRL_bic <- get.models(MRL_bic, 1)[[1]]
MRL_bic

Call: lm(formula = Intercambio ~ Am_lat + Asia_Este + Cajero_Autom + Cuenta + 1 + Regulacion_intercambio, data = datos_int_con_cont)

Coefficients: (Intercept) Am_lat Asia_Este
1.805863 0.496215 0.438617
Cajero_Autom Cuenta Regulacion_intercambio
0.002831 -0.011102 -0.577970

# Errores robustos
MRL_bic_corr_hc<-coeftest(MRL_bic, vcov. = vcovHC(MRL_bic, "HC1", adjust = TRUE, sandwich = TRUE))

MRL_bic_corr_hac<-coeftest(MRL_bic, vcov. = vcovHAC(MRL_bic, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(MRL_bic, MRL_bic_corr_hc, type = "html",
          title = "Estimación principal - Modelo BIC sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
Estimación principal - Modelo BIC sin efectos fijos de tiempo
Variable dependiente
Tasa intercambio Tasa intercambio
MCO MCO HC
(1) (2)
Am_lat 0.496*** 0.496***
(0.076) (0.083)
Asia_Este 0.439*** 0.439***
(0.082) (0.077)
Cajero_Autom 0.003*** 0.003***
(0.001) (0.001)
Cuenta -0.011*** -0.011***
(0.002) (0.002)
Regulacion_intercambio -0.578*** -0.578***
(0.052) (0.057)
Constant 1.806*** 1.806***
(0.151) (0.158)
Observations 165
R2 0.739
Adjusted R2 0.731
Residual Std. Error 0.313 (df = 159)
F Statistic 90.105*** (df = 5; 159)
Note: p<0.1; p<0.05; p<0.01

3.1.4.2 Pruebas estadísticas

#Prueba de normalidad
#Se guardan los residuos
residuos_MRL_bic<-resid(MRL_bic)
#Se computa la prueba con la función Nula: distribución normal residuos
jarque.test(residuos_MRL_bic)
## 
##  Jarque-Bera Normality Test
## 
## data:  residuos_MRL_bic
## JB = 25.042, p-value = 3.649e-06
## alternative hypothesis: greater
#Se obtiene el resultado del índice de condición de multicolinealidad
#create vector of VIF values
print("El VIF del modelo es:")
## [1] "El VIF del modelo es:"
vif(MRL_bic)
##                 Am_lat              Asia_Este           Cajero_Autom 
##               1.934106               1.095437               1.155731 
##                 Cuenta Regulacion_intercambio 
##               2.119438               1.097258
#Se ejecuta el test de White sobre el modelo original Nula: homocedasticidad
#white_lm(modelo_int_con_cont_bic, interactions = TRUE)
white(MRL_bic, interactions = TRUE)
statistic p.value parameter method alternative
34.76734 0.021379 20 White’s Test greater
#Prueba de especificación lineal RESET Nula: especificación correcta lineal
resettest(MRL_bic, power = 2:3, type = c("fitted"), data = datos_int_con_cont, vcov = vcovHC)#Corregido por heterocedasticidad)
## 
##  RESET test
## 
## data:  MRL_bic
## RESET = 1.2808, df1 = 2, df2 = 159, p-value = 0.2807

3.1.4.3 Predicción

#Pronóstico para CR
pred_int_MRL_bic <- predict(MRL_bic, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de intercambio para Costa Rica: 1.1104475.

3.1.5 MRL_aicc_et

Regresión lineal con variables de control, con efectos fijos de tiempo. Utiliza el criterio de información de Akaike (AICc) con una corrección para tamaños de muestra pequeñas.

3.1.5.1 Estimación

# Ajustar el modelo
modelo_completo_et <- lm(formula_con_cont_t, data = datos_int_con_cont)

# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MRL_aicc_et <- dredge(modelo_completo_et, rank = "AICc", fixed = variables_fijas)

# Extraer el mejor modelo según AICc
MRL_aicc_et <- get.models(MRL_aicc_et, 1)[[1]]
MRL_aicc_et

Call: lm(formula = Intercambio ~ Am_lat + Asia_Este + Cajero_Autom + Cuenta + 1 + Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + Año_2024 + Año_2025 + Regulacion_intercambio, data = datos_int_con_cont)

Coefficients: (Intercept) Am_lat Asia_Este
1.704329 0.442278 0.370156
Cajero_Autom Cuenta Año_2013
0.002522 -0.010442 0.012288
Año_2014 Año_2015 Año_2016
0.111604 0.188600 0.257224
Año_2017 Año_2018 Año_2019
0.020199 0.183328 0.153491
Año_2020 Año_2021 Año_2022
0.187072 0.183315 0.098682
Año_2023 Año_2024 Año_2025
0.178320 0.162068 NA
Regulacion_intercambio
-0.597377

# Errores robustos
MRL_aicc_et_corr_hc <- coeftest(MRL_aicc_et, vcov. = vcovHC(MRL_aicc_et, "HC1", adjust = TRUE, sandwich = TRUE))

MRL_aicc_et_corr_hac <- coeftest(MRL_aicc_et, vcov. = vcovHAC(MRL_aicc_et, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(MRL_aicc_et, MRL_aicc_et_corr_hc,
          type = "html", 
          title = "Estimación principal - Modelo AICc con efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F,
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
Estimación principal - Modelo AICc con efectos fijos de tiempo
Variable dependiente
Tasa intercambio Tasa intercambio
MCO MCO HC
(1) (2)
Am_lat 0.442*** 0.442***
(0.084) (0.091)
Asia_Este 0.370*** 0.370***
(0.088) (0.078)
Cajero_Autom 0.003*** 0.003***
(0.001) (0.001)
Cuenta -0.010*** -0.010***
(0.002) (0.002)
Año_2013 0.012 0.012
(0.200) (0.285)
Año_2014 0.112 0.112
(0.225) (0.291)
Año_2015 0.189 0.189
(0.226) (0.286)
Año_2016 0.257 0.257
(0.216) (0.306)
Año_2017 0.020 0.020
(0.190) (0.270)
Año_2018 0.183 0.183
(0.208) (0.283)
Año_2019 0.153 0.153
(0.205) (0.286)
Año_2020 0.187 0.187
(0.200) (0.277)
Año_2021 0.183 0.183
(0.209) (0.285)
Año_2022 0.099 0.099
(0.212) (0.283)
Año_2023 0.178 0.178
(0.210) (0.288)
Año_2024 0.162 0.162
(0.209) (0.296)
Año_2025
Regulacion_intercambio -0.597*** -0.597***
(0.068) (0.081)
Constant 1.704*** 1.704***
(0.240) (0.314)
Observations 165
R2 0.754
Adjusted R2 0.726
Residual Std. Error 0.316 (df = 147)
F Statistic 26.517*** (df = 17; 147)
Note: p<0.1; p<0.05; p<0.01
MRL_aicc_et_corr_hc

t test of coefficients:

                      Estimate  Std. Error t value  Pr(>|t|)    

(Intercept) 1.70432935 0.31414223 5.4253 2.327e-07 Am_lat 0.44227847 0.09103347 4.8584 2.999e-06 Asia_Este 0.37015602 0.07845557 4.7180 5.491e-06 Cajero_Autom 0.00252220 0.00078262 3.2228 0.001564 Cuenta -0.01044214 0.00191569 -5.4509 2.066e-07 Año_2013 0.01228820 0.28466377 0.0432 0.965627
Año_2014 0.11160436 0.29055669 0.3841 0.701455
Año_2015 0.18860010 0.28554855 0.6605 0.509977
Año_2016 0.25722394 0.30617607 0.8401 0.402207
Año_2017 0.02019850 0.27029244 0.0747 0.940532
Año_2018 0.18332829 0.28306816 0.6476 0.518223
Año_2019 0.15349094 0.28591607 0.5368 0.592190
Año_2020 0.18707159 0.27738240 0.6744 0.501105
Año_2021 0.18331504 0.28503876 0.6431 0.521146
Año_2022 0.09868152 0.28328979 0.3483 0.728082
Año_2023 0.17831978 0.28790514 0.6194 0.536631
Año_2024 0.16206847 0.29582846 0.5478 0.584628
Regulacion_intercambio -0.59737728 0.08146107 -7.3333 1.394e-11
* — Signif. codes: 0 ‘’ 0.001 ’’ 0.01 ’’ 0.05 ‘.’ 0.1 ’ ’ 1

MRL_aicc_et_corr_hac

t test of coefficients:

                     Estimate Std. Error t value  Pr(>|t|)    

(Intercept) 1.7043293 0.3555034 4.7941 3.962e-06 Am_lat 0.4422785 0.1294354 3.4170 0.0008191 Asia_Este 0.3701560 0.0988870 3.7432 0.0002600 Cajero_Autom 0.0025222 0.0010511 2.3997 0.0176606
Cuenta -0.0104421 0.0022331 -4.6761 6.564e-06
Año_2013 0.0122882 0.3380005 0.0364 0.9710482
Año_2014 0.1116044 0.2984837 0.3739 0.7090142
Año_2015 0.1886001 0.2821003 0.6686 0.5048266
Año_2016 0.2572239 0.3011612 0.8541 0.3944353
Año_2017 0.0201985 0.2656834 0.0760 0.9395028
Año_2018 0.1833283 0.2848540 0.6436 0.5208462
Año_2019 0.1534909 0.2830585 0.5423 0.5884614
Año_2020 0.1870716 0.2796915 0.6688 0.5046403
Año_2021 0.1833150 0.2679009 0.6843 0.4948856
Año_2022 0.0986815 0.2577920 0.3828 0.7024246
Año_2023 0.1783198 0.2324246 0.7672 0.4441838
Año_2024 0.1620685 0.1713233 0.9460 0.3457110
Regulacion_intercambio -0.5973773 0.1076232 -5.5506 1.292e-07
** — Signif. codes: 0 ‘’ 0.001 ’’ 0.01 ’’ 0.05 ‘.’ 0.1 ’ ’ 1

3.1.5.2 Pruebas estadísticas

#Prueba de normalidad
#Se guardan los residuos
residuos_MRL_aicc_et<-resid(MRL_aicc_et)
#Se computa la prueba con la función Nula: distribución normal residuos
jarque.test(residuos_MRL_aicc_et)
## 
##  Jarque-Bera Normality Test
## 
## data:  residuos_MRL_aicc_et
## JB = 25.251, p-value = 3.287e-06
## alternative hypothesis: greater
car::qqPlot(residuos_MRL_aicc_et)

## [1] 98 97
#Se ejecuta el test de White sobre el modelo original Nula: homocedasticidad
#white_lm(modelo_int_con_cont_ef_aicc, interactions = TRUE)
white(MRL_aicc_et, interactions = TRUE)
statistic p.value parameter method alternative
84.26254 1 189 White’s Test greater

3.1.5.3 Predicción

#Pronóstico para CR
pred_int_MRL_aicc_et<-predict(MRL_aicc_et, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de intercambio para Costa Rica: 1.1252458.

3.1.6 MRL_bic_et

Regresión lineal con variables de control, con efectos fijos de tiempo. Utiliza el criterio de información bayesiana (BIC).

3.1.6.1 Estimación

# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MRL_bic_et <- dredge(modelo_completo_et, rank = "BIC", fixed = variables_fijas)

# Extraer el mejor modelo según AICc
MRL_bic_et <- get.models(MRL_bic_et, 1)[[1]]
MRL_bic_et

Call: lm(formula = Intercambio ~ Am_lat + Asia_Este + Cajero_Autom + Cuenta + 1 + Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + Año_2024 + Año_2025 + Regulacion_intercambio, data = datos_int_con_cont)

Coefficients: (Intercept) Am_lat Asia_Este
1.704329 0.442278 0.370156
Cajero_Autom Cuenta Año_2013
0.002522 -0.010442 0.012288
Año_2014 Año_2015 Año_2016
0.111604 0.188600 0.257224
Año_2017 Año_2018 Año_2019
0.020199 0.183328 0.153491
Año_2020 Año_2021 Año_2022
0.187072 0.183315 0.098682
Año_2023 Año_2024 Año_2025
0.178320 0.162068 NA
Regulacion_intercambio
-0.597377

# Errores robustos
MRL_bic_et_corr_hc <- coeftest(MRL_bic_et, vcov. = vcovHC(MRL_bic_et, "HC1", adjust = TRUE, sandwich = TRUE))

MRL_bic_et_corr_hac <- coeftest(MRL_bic_et, vcov. = vcovHAC(MRL_bic_et, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(MRL_bic_et, MRL_bic_et_corr_hc, type = "html",
          title = "Estimación principal - Modelo BIC con efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
Estimación principal - Modelo BIC con efectos fijos de tiempo
Variable dependiente
Tasa intercambio Tasa intercambio
MCO MCO HC
(1) (2)
Am_lat 0.442*** 0.442***
(0.084) (0.091)
Asia_Este 0.370*** 0.370***
(0.088) (0.078)
Cajero_Autom 0.003*** 0.003***
(0.001) (0.001)
Cuenta -0.010*** -0.010***
(0.002) (0.002)
Año_2013 0.012 0.012
(0.200) (0.285)
Año_2014 0.112 0.112
(0.225) (0.291)
Año_2015 0.189 0.189
(0.226) (0.286)
Año_2016 0.257 0.257
(0.216) (0.306)
Año_2017 0.020 0.020
(0.190) (0.270)
Año_2018 0.183 0.183
(0.208) (0.283)
Año_2019 0.153 0.153
(0.205) (0.286)
Año_2020 0.187 0.187
(0.200) (0.277)
Año_2021 0.183 0.183
(0.209) (0.285)
Año_2022 0.099 0.099
(0.212) (0.283)
Año_2023 0.178 0.178
(0.210) (0.288)
Año_2024 0.162 0.162
(0.209) (0.296)
Año_2025
Regulacion_intercambio -0.597*** -0.597***
(0.068) (0.081)
Constant 1.704*** 1.704***
(0.240) (0.314)
Observations 165
R2 0.754
Adjusted R2 0.726
Residual Std. Error 0.316 (df = 147)
F Statistic 26.517*** (df = 17; 147)
Note: p<0.1; p<0.05; p<0.01

3.1.6.2 Pruebas estadísticas

#Prueba de normalidad
#Se guardan los residuos
residuos_MRL_bic_et <- resid(MRL_bic_et)
#Se computa la prueba con la función Nula: distribución normal residuos
jarque.test(residuos_MRL_bic_et)
## 
##  Jarque-Bera Normality Test
## 
## data:  residuos_MRL_bic_et
## JB = 25.251, p-value = 3.287e-06
## alternative hypothesis: greater
white(MRL_bic_et, interactions = TRUE)
statistic p.value parameter method alternative
84.26254 1 189 White’s Test greater

3.1.6.3 Predicción

#Pronóstico para CR
pred_int_MRL_bic_et <- predict(MRL_bic_et, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de intercambio para Costa Rica: 1.1252458.

3.2 Pruebas de robustez

A continuación, se evalúa cómo cambian los resultados anteriores al estimar las comisiones con modelos alternativos.

3.2.1 Modelos de regresión truncados

Mientras que el modelo de regresión lineal no impone ninguna restricción a las comisiones, es de esperar que las comisiones sean necesariamente mayores a cero como mínimo, o mayores a los costos asociados en particular. Para tratar estos casos, se pueden utilizar modelos de variable dependiente truncada.

Se estiman estos modelos bajo dos supuestos sobre el punto de truncamiento. Un primer punto de partida es que el punto de truncamiento es en cero. El segundo supuesto es que el punto de truncamiento sucede en el mínimo de la comisión de intercambio observada en la muestra.

Además, se estima cada modelo con las variables seleccionadas por los criterios de información de AICc y BIC.

3.2.1.1 MRT_aicc_0

3.2.1.1.1 Estimación
# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MRT_aicc_0 <- dredge(modelo_completo, rank = "AICc", fixed = "Regulación_intercambio")

# Extraer el mejor modelo según AICc
MRT_aicc_0 <- names(coef(get.models(MRT_aicc_0, 1)[[1]]))
MRT_aicc_0 <- MRT_aicc_0[MRT_aicc_0 != "(Intercept)"]  # Excluir intercepto

# Ajustar modelo truncado con límite inferior 0
formula_trunc <- as.formula(paste("Intercambio ~", paste(MRT_aicc_0, collapse = " + ")))
MRT_aicc_0 <- truncreg(formula_trunc, data = datos_int_con_cont, point = 0, direction = "left")

summary(MRT_aicc_0)
## 
## Call:
## truncreg(formula = formula_trunc, data = datos_int_con_cont, 
##     point = 0, direction = "left")
## 
## BFGS maximization method
## 72 iterations, 0h:0m:0s 
## g'(-H)^-1g = 7.91E-09 
##  
## 
## 
## Coefficients :
##                           Estimate  Std. Error  t-value  Pr(>|t|)    
## (Intercept)             2.02032135  0.18484507  10.9298 < 2.2e-16 ***
## Am_lat                  0.48307063  0.08006726   6.0333 1.606e-09 ***
## Asia_Este               0.51237408  0.08937417   5.7329 9.872e-09 ***
## Cajero_Autom            0.00233425  0.00094756   2.4634   0.01376 *  
## Credito                 0.00414702  0.00236031   1.7570   0.07892 .  
## Cuenta                 -0.01494974  0.00246202  -6.0721 1.262e-09 ***
## Regulacion_intercambio -0.64555378  0.05881280 -10.9764 < 2.2e-16 ***
## sigma                   0.32289552  0.02018864  15.9939 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Log-Likelihood: -30.937 on 8 Df
3.2.1.1.2 Predicción
#Pronóstico para CR
pred_int_MRT_aicc_0 <- predict(MRT_aicc_0, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de intercambio para Costa Rica: 1.0038033.

3.2.1.2 MRT_bic_0

3.2.1.2.1 Estimación
# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MRT_bic_0 <- dredge(modelo_completo, rank = "BIC", fixed = "Regulacion_intercambio")

# Extraer el mejor modelo según AICc
MRT_bic_0 <- names(coef(get.models(MRT_bic_0, 1)[[1]]))
MRT_bic_0 <- MRT_bic_0[MRT_bic_0 !="(Intercept)"]  # Excluir intercepto

# Ajustar modelo truncado con límite inferior 0
formula_trunc <- as.formula(paste("Intercambio ~", paste(MRT_bic_0, collapse = " + ")))
MRT_bic_0 <- truncreg(formula_trunc, data = datos_int_con_cont, point = 0, direction = "left")
summary(MRT_bic_0)
## 
## Call:
## truncreg(formula = formula_trunc, data = datos_int_con_cont, 
##     point = 0, direction = "left")
## 
## BFGS maximization method
## 62 iterations, 0h:0m:0s 
## g'(-H)^-1g = 8.36E-09 
##  
## 
## 
## Coefficients :
##                           Estimate  Std. Error  t-value  Pr(>|t|)    
## (Intercept)             1.86055242  0.16185476  11.4952 < 2.2e-16 ***
## Am_lat                  0.50018467  0.08029718   6.2292 4.689e-10 ***
## Asia_Este               0.49765095  0.08980120   5.5417 2.996e-08 ***
## Cajero_Autom            0.00320741  0.00082247   3.8997 9.630e-05 ***
## Cuenta                 -0.01230078  0.00194461  -6.3256 2.523e-10 ***
## Regulacion_intercambio -0.62434682  0.05777249 -10.8070 < 2.2e-16 ***
## sigma                   0.32627077  0.02044819  15.9560 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Log-Likelihood: -32.466 on 7 Df
3.2.1.2.2 Predicción
#Pronóstico para CR
pred_int_MRT_bic_0 <- predict(MRT_bic_0, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de intercambio para Costa Rica: 1.0609193.

3.2.1.3 MRT_aicc_et_0

3.2.1.3.1 Estimación
# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MRT_aicc_et_0 <- dredge(modelo_completo_et, rank = "AICc", fixed = variables_fijas)

# Extraer el mejor modelo según AICc
MRT_aicc_et_0 <- get.models(MRT_aicc_et_0, 1)[[1]]

# Obtener coeficientes
coeficientes <- coef(MRT_aicc_et_0)

# Filtrar nombres de coeficientes que no sean NA
coeficientes_validos <- names(coeficientes[!is.na(coeficientes)])

# Excluir el intercepto
variables_truncadas <- coeficientes_validos[coeficientes_validos != "(Intercept)"]

# Construir fórmula para modelo truncado
formula_trunc <- as.formula(paste("Intercambio ~", paste(variables_truncadas, collapse = " + ")))

# Ajustar modelo truncado con límite inferior 0
MRT_aicc_et_0 <- truncreg(formula_trunc, data = datos_int_con_cont, point = 0, direction = "left")

summary(MRT_aicc_et_0)
## 
## Call:
## truncreg(formula = formula_trunc, data = datos_int_con_cont, 
##     point = 0, direction = "left")
## 
## BFGS maximization method
## 107 iterations, 0h:0m:0s 
## g'(-H)^-1g = 9.51E-12 
##  
## 
## 
## Coefficients :
##                           Estimate  Std. Error t-value  Pr(>|t|)    
## (Intercept)             1.74455726  0.26462527  6.5926 4.323e-11 ***
## Am_lat                  0.44112572  0.08576697  5.1433 2.699e-07 ***
## Asia_Este               0.41995214  0.09228866  4.5504 5.354e-06 ***
## Cajero_Autom            0.00295793  0.00082036  3.6056 0.0003114 ***
## Cuenta                 -0.01184710  0.00199976 -5.9243 3.137e-09 ***
## Año_2013                0.05374110  0.22500642  0.2388 0.8112277    
## Año_2014                0.12495631  0.25055346  0.4987 0.6179758    
## Año_2015                0.19858125  0.25083653  0.7917 0.4285496    
## Año_2016                0.26950520  0.24122834  1.1172 0.2639001    
## Año_2017               -0.00701451  0.21904900 -0.0320 0.9744541    
## Año_2018                0.20349775  0.23192509  0.8774 0.3802538    
## Año_2019                0.16998486  0.23098396  0.7359 0.4617817    
## Año_2020                0.21806577  0.22525715  0.9681 0.3330070    
## Año_2021                0.22035156  0.23332420  0.9444 0.3449649    
## Año_2022                0.13087124  0.23817704  0.5495 0.5826827    
## Año_2023                0.21043821  0.23470672  0.8966 0.3699320    
## Año_2024                0.19411076  0.23523891  0.8252 0.4092783    
## Regulacion_intercambio -0.62205085  0.06971190 -8.9232 < 2.2e-16 ***
## sigma                   0.31633122  0.01976694 16.0030 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Log-Likelihood: -27.272 on 19 Df
3.2.1.3.2 Predicción
#Pronóstico para CR
pred_int_MRT_aicc_et_0<-predict(MRT_aicc_et_0, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de intercambio para Costa Rica: 1.098914.

3.2.1.4 MRT_bic_et_0

3.2.1.4.1 Estimación
# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MRT_bic_et_0 <- dredge(modelo_completo_et, rank = "BIC", fixed = variables_fijas)

# Extraer el mejor modelo según AICc
MRT_bic_et_0 <- get.models(MRT_bic_et_0, 1)[[1]]

# Obtener coeficientes
coeficientes <- coef(MRT_bic_et_0)

# Filtrar nombres de coeficientes que no sean NA
coeficientes_validos <- names(coeficientes[!is.na(coeficientes)])

# Excluir el intercepto
variables_truncadas <- coeficientes_validos[coeficientes_validos != "(Intercept)"]

# Construir fórmula para modelo truncado
formula_trunc <- as.formula(paste("Intercambio ~", paste(variables_truncadas, collapse = " + ")))

# Ajustar modelo truncado con límite inferior 0
MRT_bic_et_0 <- truncreg(formula_trunc, data = datos_int_con_cont, point = 0, direction = "left")

summary(MRT_bic_et_0)
## 
## Call:
## truncreg(formula = formula_trunc, data = datos_int_con_cont, 
##     point = 0, direction = "left")
## 
## BFGS maximization method
## 107 iterations, 0h:0m:0s 
## g'(-H)^-1g = 9.51E-12 
##  
## 
## 
## Coefficients :
##                           Estimate  Std. Error t-value  Pr(>|t|)    
## (Intercept)             1.74455726  0.26462527  6.5926 4.323e-11 ***
## Am_lat                  0.44112572  0.08576697  5.1433 2.699e-07 ***
## Asia_Este               0.41995214  0.09228866  4.5504 5.354e-06 ***
## Cajero_Autom            0.00295793  0.00082036  3.6056 0.0003114 ***
## Cuenta                 -0.01184710  0.00199976 -5.9243 3.137e-09 ***
## Año_2013                0.05374110  0.22500642  0.2388 0.8112277    
## Año_2014                0.12495631  0.25055346  0.4987 0.6179758    
## Año_2015                0.19858125  0.25083653  0.7917 0.4285496    
## Año_2016                0.26950520  0.24122834  1.1172 0.2639001    
## Año_2017               -0.00701451  0.21904900 -0.0320 0.9744541    
## Año_2018                0.20349775  0.23192509  0.8774 0.3802538    
## Año_2019                0.16998486  0.23098396  0.7359 0.4617817    
## Año_2020                0.21806577  0.22525715  0.9681 0.3330070    
## Año_2021                0.22035156  0.23332420  0.9444 0.3449649    
## Año_2022                0.13087124  0.23817704  0.5495 0.5826827    
## Año_2023                0.21043821  0.23470672  0.8966 0.3699320    
## Año_2024                0.19411076  0.23523891  0.8252 0.4092783    
## Regulacion_intercambio -0.62205085  0.06971190 -8.9232 < 2.2e-16 ***
## sigma                   0.31633122  0.01976694 16.0030 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Log-Likelihood: -27.272 on 19 Df
3.2.1.4.2 Predicción
#Pronóstico para CR
pred_int_MRT_bic_et_0 <- predict(MRT_bic_et_0, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de intercambio para Costa Rica: 1.098914.

3.2.1.5 MRT_aicc_026

3.2.1.5.1 Estimación
# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MRT_aicc_026 <- dredge(modelo_completo, rank = "AICc", fixed = "Regulación_intercambio")

# Extraer el mejor modelo según AICc
MRT_aicc_026 <- names(coef(get.models(MRT_aicc_026, 1)[[1]]))
MRT_aicc_026 <- MRT_aicc_026[MRT_aicc_026 != "(Intercept)"]  # Excluir intercepto

# Ajustar modelo truncado con límite inferior 0.26
formula_trunc <- as.formula(paste("Intercambio ~", paste(MRT_aicc_026, collapse = " + ")))
MRT_aicc_026 <- truncreg(formula_trunc, data = datos_int_con_cont, point = 0.26, direction = "left")

summary(MRT_aicc_026)
## 
## Call:
## truncreg(formula = formula_trunc, data = datos_int_con_cont, 
##     point = 0.26, direction = "left")
## 
## BFGS maximization method
## 74 iterations, 0h:0m:0s 
## g'(-H)^-1g = 1.95E-10 
##  
## 
## 
## Coefficients :
##                          Estimate Std. Error  t-value  Pr(>|t|)    
## (Intercept)             2.2358233  0.2211859  10.1083 < 2.2e-16 ***
## Am_lat                  0.5243947  0.0931481   5.6297 1.805e-08 ***
## Asia_Este               0.7324132  0.1179986   6.2070 5.402e-10 ***
## Cajero_Autom            0.0028115  0.0011914   2.3598   0.01828 *  
## Credito                 0.0057429  0.0031532   1.8213   0.06856 .  
## Cuenta                 -0.0194382  0.0031252  -6.2198 4.979e-10 ***
## Regulacion_intercambio -0.8323683  0.0803934 -10.3537 < 2.2e-16 ***
## sigma                   0.3523780  0.0249871  14.1024 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Log-Likelihood: -2.8649 on 8 Df
3.2.1.5.2 Predicción
#Pronóstico para CR
pred_int_MRT_aicc_026 <- predict(MRT_aicc_026, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de intercambio para Costa Rica: 0.8088471.

3.2.1.6 MRT_bic_026

3.2.1.6.1 Estimación
# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MRT_bic_026 <- dredge(modelo_completo, rank = "BIC", fixed = "Regulacion_intercambio")

# Extraer el mejor modelo según AICc
MRT_bic_026 <- names(coef(get.models(MRT_bic_026, 1)[[1]]))
MRT_bic_026 <- MRT_bic_026[MRT_bic_026 !="(Intercept)"]  # Excluir intercepto

# Ajustar modelo truncado con límite inferior 0.26
formula_trunc <- as.formula(paste("Intercambio ~", paste(MRT_bic_026, collapse = " + ")))
MRT_bic_026 <- truncreg(formula_trunc, data = datos_int_con_cont, point = 0.26, direction = "left")

summary(MRT_bic_026)
## 
## Call:
## truncreg(formula = formula_trunc, data = datos_int_con_cont, 
##     point = 0.26, direction = "left")
## 
## BFGS maximization method
## 67 iterations, 0h:0m:0s 
## g'(-H)^-1g = 1.35E-10 
##  
## 
## 
## Coefficients :
##                          Estimate Std. Error  t-value  Pr(>|t|)    
## (Intercept)             2.0364979  0.1923700  10.5864 < 2.2e-16 ***
## Am_lat                  0.5464007  0.0938824   5.8201 5.883e-09 ***
## Asia_Este               0.7189280  0.1192453   6.0290 1.650e-09 ***
## Cajero_Autom            0.0039207  0.0010550   3.7164 0.0002021 ***
## Cuenta                 -0.0159697  0.0024209  -6.5967 4.204e-11 ***
## Regulacion_intercambio -0.8034403  0.0785940 -10.2227 < 2.2e-16 ***
## sigma                   0.3570353  0.0254626  14.0219 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Log-Likelihood: -4.4987 on 7 Df
3.2.1.6.2 Predicción
#Pronóstico para CR
pred_int_MRT_bic_026 <- predict(MRT_bic_026, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de intercambio para Costa Rica: 0.8871762.

3.2.1.7 MRT_aicc_et_026

3.2.1.7.1 Estimación
# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MRT_aicc_et_026 <- dredge(modelo_completo_et, rank = "AICc", fixed = variables_fijas)

# Extraer el mejor modelo según AICc
MRT_aicc_et_026 <- get.models(MRT_aicc_et_026, 1)[[1]]

# Obtener coeficientes
coeficientes <- coef(MRT_aicc_et_026)

# Filtrar nombres de coeficientes que no sean NA
coeficientes_validos <- names(coeficientes[!is.na(coeficientes)])

# Excluir el intercepto
variables_truncadas <- coeficientes_validos[coeficientes_validos != "(Intercept)"]

# Construir fórmula para modelo truncado
formula_trunc <- as.formula(paste("Intercambio ~", paste(variables_truncadas, collapse = " + ")))

# Ajustar modelo truncado con límite inferior 0.26
MRT_aicc_et_026 <- truncreg(formula_trunc, data = datos_int_con_cont, point = 0.26, direction = "left")

summary(MRT_aicc_et_026)
## 
## Call:
## truncreg(formula = formula_trunc, data = datos_int_con_cont, 
##     point = 0.26, direction = "left")
## 
## BFGS maximization method
## 104 iterations, 0h:0m:0s 
## g'(-H)^-1g = 1.88E-10 
##  
## 
## 
## Coefficients :
##                          Estimate Std. Error t-value  Pr(>|t|)    
## (Intercept)             1.8540159  0.3483188  5.3228 1.022e-07 ***
## Am_lat                  0.4914936  0.1018350  4.8264 1.390e-06 ***
## Asia_Este               0.6502805  0.1251222  5.1972 2.024e-07 ***
## Cajero_Autom            0.0040653  0.0010645  3.8191  0.000134 ***
## Cuenta                 -0.0167422  0.0025986 -6.4427 1.174e-10 ***
## Año_2013                0.2485518  0.3049567  0.8150  0.415050    
## Año_2014                0.1910837  0.3325287  0.5746  0.565536    
## Año_2015                0.2266494  0.3354116  0.6757  0.499209    
## Año_2016                0.3175226  0.3222833  0.9852  0.324512    
## Año_2017               -0.0952424  0.3059007 -0.3114  0.755534    
## Año_2018                0.2931942  0.3112183  0.9421  0.346149    
## Año_2019                0.2375312  0.3123137  0.7606  0.446924    
## Año_2020                0.3666505  0.3050986  1.2017  0.229463    
## Año_2021                0.3722257  0.3126761  1.1905  0.233869    
## Año_2022                0.2512187  0.3214701  0.7815  0.434527    
## Año_2023                0.3398796  0.3166465  1.0734  0.283104    
## Año_2024                0.3246639  0.3203081  1.0136  0.310774    
## Regulacion_intercambio -0.7371489  0.0837915 -8.7974 < 2.2e-16 ***
## sigma                   0.3459433  0.0245942 14.0661 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Log-Likelihood: 4.3833 on 19 Df
3.2.1.7.2 Predicción
#Pronóstico para CR
pred_int_MRT_aicc_et_026 <- predict(MRT_aicc_et_026, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de intercambio para Costa Rica: 0.9947342.

3.2.1.8 MRT_bic_et_026

3.2.1.8.1 Estimación
# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MRT_bic_et_026 <- dredge(modelo_completo_et, rank = "BIC", fixed = variables_fijas)

# Extraer el mejor modelo según AICc
MRT_bic_et_026 <- get.models(MRT_bic_et_026, 1)[[1]]

# Obtener coeficientes
coeficientes <- coef(MRT_bic_et_026)

# Filtrar nombres de coeficientes que no sean NA
coeficientes_validos <- names(coeficientes[!is.na(coeficientes)])

# Excluir el intercepto
variables_truncadas <- coeficientes_validos[coeficientes_validos != "(Intercept)"]

# Construir fórmula para modelo truncado
formula_trunc <- as.formula(paste("Intercambio ~", paste(variables_truncadas, collapse = " + ")))

# Ajustar modelo truncado con límite inferior 0.26
MRT_bic_et_026 <- truncreg(formula_trunc, data = datos_int_con_cont, point = 0.26, direction = "left")

summary(MRT_bic_et_026)
## 
## Call:
## truncreg(formula = formula_trunc, data = datos_int_con_cont, 
##     point = 0.26, direction = "left")
## 
## BFGS maximization method
## 104 iterations, 0h:0m:0s 
## g'(-H)^-1g = 1.88E-10 
##  
## 
## 
## Coefficients :
##                          Estimate Std. Error t-value  Pr(>|t|)    
## (Intercept)             1.8540159  0.3483188  5.3228 1.022e-07 ***
## Am_lat                  0.4914936  0.1018350  4.8264 1.390e-06 ***
## Asia_Este               0.6502805  0.1251222  5.1972 2.024e-07 ***
## Cajero_Autom            0.0040653  0.0010645  3.8191  0.000134 ***
## Cuenta                 -0.0167422  0.0025986 -6.4427 1.174e-10 ***
## Año_2013                0.2485518  0.3049567  0.8150  0.415050    
## Año_2014                0.1910837  0.3325287  0.5746  0.565536    
## Año_2015                0.2266494  0.3354116  0.6757  0.499209    
## Año_2016                0.3175226  0.3222833  0.9852  0.324512    
## Año_2017               -0.0952424  0.3059007 -0.3114  0.755534    
## Año_2018                0.2931942  0.3112183  0.9421  0.346149    
## Año_2019                0.2375312  0.3123137  0.7606  0.446924    
## Año_2020                0.3666505  0.3050986  1.2017  0.229463    
## Año_2021                0.3722257  0.3126761  1.1905  0.233869    
## Año_2022                0.2512187  0.3214701  0.7815  0.434527    
## Año_2023                0.3398796  0.3166465  1.0734  0.283104    
## Año_2024                0.3246639  0.3203081  1.0136  0.310774    
## Regulacion_intercambio -0.7371489  0.0837915 -8.7974 < 2.2e-16 ***
## sigma                   0.3459433  0.0245942 14.0661 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Log-Likelihood: 4.3833 on 19 Df
3.2.1.8.2 Predicción
#Pronóstico para CR
pred_int_MRT_bic_et_026 <- predict(MRT_bic_et_026, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de intercambio para Costa Rica: 0.9947342.

3.2.2 Modelos de regresión con transformación logarítmica de la variable dependiente

Al no existir ningún tipo de restricción en la estimación de los coeficientes, cabe la posibilidad de que un modelo de regresión lineal genere predicciones negativas. Sin embargo, ninguna de las predicciones obtenidas para el intercambio o adquirencia son negativas.

A pesar de no significar un potencial problema, una manera de garantizar que las predicciones sean positivas es recurrir a una transformación logarítmica de la variable dependiente.

3.2.2.1 MTL_aicc

3.2.2.1.1 Estimación
# Ajustar el modelo
modelo_completo_log <- lm(formula_con_cont, data = datos_int_con_cont_log)

# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MTL_aicc <- dredge(modelo_completo_log, rank = "AICc", fixed = "Regulacion_intercambio")

# Extraer el mejor modelo según AICc
MTL_aicc <- get.models(MTL_aicc, 1)[[1]]
MTL_aicc
## 
## Call:
## lm(formula = Intercambio ~ Cuenta + Densidad_Pob + Europa + 1 + 
##     Regulacion_intercambio, data = datos_int_con_cont_log)
## 
## Coefficients:
##            (Intercept)                  Cuenta            Densidad_Pob  
##              1.3056666              -0.0084369              -0.0006282  
##                 Europa  Regulacion_intercambio  
##             -0.6314867              -0.7373857
# Errores robustos
MTL_aicc_corr_hc <- coeftest(MTL_aicc, vcov. = vcovHC(MTL_aicc, "HC1", adjust = TRUE, sandwich = TRUE))

MTL_aicc_corr_hac <- coeftest(MTL_aicc, vcov. = vcovHAC(MTL_aicc, adjust = TRUE, sandwich = TRUE))

summary(MTL_aicc)
## 
## Call:
## lm(formula = Intercambio ~ Cuenta + Densidad_Pob + Europa + 1 + 
##     Regulacion_intercambio, data = datos_int_con_cont_log)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.83530 -0.29105  0.00159  0.20652  1.20776 
## 
## Coefficients:
##                          Estimate Std. Error t value Pr(>|t|)    
## (Intercept)             1.3056666  0.1189284  10.979  < 2e-16 ***
## Cuenta                 -0.0084369  0.0016355  -5.159 7.27e-07 ***
## Densidad_Pob           -0.0006282  0.0001623  -3.871 0.000158 ***
## Europa                 -0.6314867  0.0627985 -10.056  < 2e-16 ***
## Regulacion_intercambio -0.7373857  0.0598182 -12.327  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.3664 on 160 degrees of freedom
## Multiple R-squared:  0.7277, Adjusted R-squared:  0.7209 
## F-statistic: 106.9 on 4 and 160 DF,  p-value: < 2.2e-16
3.2.2.1.2 Predicción
#Pronóstico para CR
pred_int_MTL_aicc <- predict(MTL_aicc, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de intercambio para Costa Rica: -0.0962421.

3.2.2.2 MTL_bic

3.2.2.2.1 Estimación
# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MTL_bic <- dredge(modelo_completo_log, rank = "BIC", fixed = "Regulacion_intercambio")

# Extraer el mejor modelo según AICc
MTL_bic <- get.models(MTL_bic, 1)[[1]]
MTL_bic
## 
## Call:
## lm(formula = Intercambio ~ Cuenta + Densidad_Pob + Europa + 1 + 
##     Regulacion_intercambio, data = datos_int_con_cont_log)
## 
## Coefficients:
##            (Intercept)                  Cuenta            Densidad_Pob  
##              1.3056666              -0.0084369              -0.0006282  
##                 Europa  Regulacion_intercambio  
##             -0.6314867              -0.7373857
# Errores robustos
MTL_bic_corr_hc <- coeftest(MTL_bic, vcov. = vcovHC(MTL_bic, "HC1", adjust = TRUE, sandwich = TRUE))

MTL_bic_corr_hac <- coeftest(MTL_bic, vcov. = vcovHAC(MTL_bic, adjust = TRUE, sandwich = TRUE))

summary(MTL_bic)
## 
## Call:
## lm(formula = Intercambio ~ Cuenta + Densidad_Pob + Europa + 1 + 
##     Regulacion_intercambio, data = datos_int_con_cont_log)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.83530 -0.29105  0.00159  0.20652  1.20776 
## 
## Coefficients:
##                          Estimate Std. Error t value Pr(>|t|)    
## (Intercept)             1.3056666  0.1189284  10.979  < 2e-16 ***
## Cuenta                 -0.0084369  0.0016355  -5.159 7.27e-07 ***
## Densidad_Pob           -0.0006282  0.0001623  -3.871 0.000158 ***
## Europa                 -0.6314867  0.0627985 -10.056  < 2e-16 ***
## Regulacion_intercambio -0.7373857  0.0598182 -12.327  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.3664 on 160 degrees of freedom
## Multiple R-squared:  0.7277, Adjusted R-squared:  0.7209 
## F-statistic: 106.9 on 4 and 160 DF,  p-value: < 2.2e-16
3.2.2.2.2 Predicción
#Pronóstico para CR
pred_int_MTL_bic <- predict(MTL_bic, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de intercambio para Costa Rica: -0.0962421.

3.2.2.3 MTL_aicc_et

3.2.2.3.1 Estimación
# Ajustar el modelo
modelo_completo_log_et <- lm(formula_con_cont_t, data = datos_int_con_cont_log)

# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MTL_aicc_et <- dredge(modelo_completo_log_et, rank = "AICc", fixed = variables_fijas)

# Extraer el mejor modelo según AICc
MTL_aicc_et <- get.models(MTL_aicc_et, 1)[[1]]
MTL_aicc_et
## 
## Call:
## lm(formula = Intercambio ~ Crimen + Cuenta + Densidad_Pob + Europa + 
##     1 + Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + 
##     Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022 + 
##     Año_2023 + Año_2024 + Año_2025 + Regulacion_intercambio, 
##     data = datos_int_con_cont_log)
## 
## Coefficients:
##            (Intercept)                  Crimen                  Cuenta  
##              1.2471473               0.0000541              -0.0108826  
##           Densidad_Pob                  Europa                Año_2013  
##             -0.0005345              -0.5746185               0.1711016  
##               Año_2014                Año_2015                Año_2016  
##              0.2080083               0.1576363               0.0648345  
##               Año_2017                Año_2018                Año_2019  
##             -0.1335024               0.1277559               0.0878801  
##               Año_2020                Año_2021                Año_2022  
##              0.2476809               0.2016801               0.0162482  
##               Año_2023                Año_2024                Año_2025  
##              0.1220381               0.1716042                      NA  
## Regulacion_intercambio  
##             -0.6247482
# Errores robustos
MTL_aicc_et_corr_hc <- coeftest(MTL_aicc_et, vcov. = vcovHC(MTL_aicc_et, "HC1", adjust = TRUE, sandwich = TRUE))

MTL_aicc_et_corr_hac <- coeftest(MTL_aicc_et, vcov. = vcovHAC(MTL_aicc_et, adjust = TRUE, sandwich = TRUE))

summary(MTL_aicc_et)
## 
## Call:
## lm(formula = Intercambio ~ Crimen + Cuenta + Densidad_Pob + Europa + 
##     1 + Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + 
##     Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022 + 
##     Año_2023 + Año_2024 + Año_2025 + Regulacion_intercambio, 
##     data = datos_int_con_cont_log)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -0.9034 -0.2139 -0.0391  0.2021  1.0749 
## 
## Coefficients: (1 not defined because of singularities)
##                          Estimate Std. Error t value Pr(>|t|)    
## (Intercept)             1.247e+00  2.394e-01   5.210 6.27e-07 ***
## Crimen                  5.410e-05  3.565e-05   1.518  0.13125    
## Cuenta                 -1.088e-02  1.962e-03  -5.546 1.32e-07 ***
## Densidad_Pob           -5.345e-04  1.668e-04  -3.205  0.00166 ** 
## Europa                 -5.746e-01  7.461e-02  -7.701 1.83e-12 ***
## Año_2013                1.711e-01  2.303e-01   0.743  0.45877    
## Año_2014                2.080e-01  2.551e-01   0.816  0.41610    
## Año_2015                1.576e-01  2.554e-01   0.617  0.53812    
## Año_2016                6.483e-02  2.452e-01   0.264  0.79180    
## Año_2017               -1.335e-01  2.171e-01  -0.615  0.53962    
## Año_2018                1.278e-01  2.368e-01   0.540  0.59032    
## Año_2019                8.788e-02  2.342e-01   0.375  0.70805    
## Año_2020                2.477e-01  2.275e-01   1.088  0.27816    
## Año_2021                2.017e-01  2.391e-01   0.844  0.40032    
## Año_2022                1.625e-02  2.428e-01   0.067  0.94673    
## Año_2023                1.220e-01  2.406e-01   0.507  0.61283    
## Año_2024                1.716e-01  2.380e-01   0.721  0.47203    
## Año_2025                       NA         NA      NA       NA    
## Regulacion_intercambio -6.247e-01  7.516e-02  -8.312 5.76e-14 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.3597 on 147 degrees of freedom
## Multiple R-squared:  0.7589, Adjusted R-squared:  0.731 
## F-statistic: 27.21 on 17 and 147 DF,  p-value: < 2.2e-16
3.2.2.3.2 Predicción
#Pronóstico para CR
pred_int_MTL_aicc_et <- predict(MTL_aicc_et, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de intercambio para Costa Rica: 0.0357798.

3.2.2.4 MTL_bic_et

3.2.2.4.1 Estimación
# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MTL_bic_et <- dredge(modelo_completo_log_et, rank = "BIC", fixed = variables_fijas)

# Extraer el mejor modelo según AICc
MTL_bic_et <- get.models(MTL_bic_et, 1)[[1]]
MTL_bic_et
## 
## Call:
## lm(formula = Intercambio ~ Cuenta + Densidad_Pob + Europa + 1 + 
##     Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + 
##     Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022 + 
##     Año_2023 + Año_2024 + Año_2025 + Regulacion_intercambio, 
##     data = datos_int_con_cont_log)
## 
## Coefficients:
##            (Intercept)                  Cuenta            Densidad_Pob  
##              1.1940917              -0.0093251              -0.0005708  
##                 Europa                Año_2013                Año_2014  
##             -0.6034070               0.2241197               0.2033580  
##               Año_2015                Año_2016                Año_2017  
##              0.1535544               0.0623950              -0.1222378  
##               Año_2018                Año_2019                Año_2020  
##              0.1231974               0.0776400               0.2270233  
##               Año_2021                Año_2022                Año_2023  
##              0.1740108               0.0039697               0.0903919  
##               Año_2024                Año_2025  Regulacion_intercambio  
##              0.1514759                      NA              -0.6103018
# Errores robustos
MTL_bic_et_corr_hc <- coeftest(MTL_bic_et, vcov. = vcovHC(MTL_bic_et, "HC1", adjust = TRUE, sandwich = TRUE))

MTL_bic_et_corr_hac <- coeftest(MTL_bic_et, vcov. = vcovHAC(MTL_bic_et, adjust = TRUE, sandwich = TRUE))

summary(MTL_bic_et)
## 
## Call:
## lm(formula = Intercambio ~ Cuenta + Densidad_Pob + Europa + 1 + 
##     Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + 
##     Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022 + 
##     Año_2023 + Año_2024 + Año_2025 + Regulacion_intercambio, 
##     data = datos_int_con_cont_log)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.92377 -0.22853 -0.01887  0.20319  1.08958 
## 
## Coefficients: (1 not defined because of singularities)
##                          Estimate Std. Error t value Pr(>|t|)    
## (Intercept)             1.1940917  0.2378476   5.020 1.46e-06 ***
## Cuenta                 -0.0093251  0.0016797  -5.552 1.28e-07 ***
## Densidad_Pob           -0.0005708  0.0001658  -3.443 0.000749 ***
## Europa                 -0.6034070  0.0724799  -8.325 5.18e-14 ***
## Año_2013                0.2241197  0.2286735   0.980 0.328643    
## Año_2014                0.2033580  0.2561683   0.794 0.428557    
## Año_2015                0.1535544  0.2565540   0.599 0.550403    
## Año_2016                0.0623950  0.2462344   0.253 0.800313    
## Año_2017               -0.1222378  0.2179628  -0.561 0.575769    
## Año_2018                0.1231974  0.2378038   0.518 0.605188    
## Año_2019                0.0776400  0.2351487   0.330 0.741735    
## Año_2020                0.2270233  0.2281349   0.995 0.321298    
## Año_2021                0.1740108  0.2394501   0.727 0.468551    
## Año_2022                0.0039697  0.2436904   0.016 0.987025    
## Año_2023                0.0903919  0.2407981   0.375 0.707912    
## Año_2024                0.1514759  0.2386681   0.635 0.526622    
## Año_2025                       NA         NA      NA       NA    
## Regulacion_intercambio -0.6103018  0.0748818  -8.150 1.41e-13 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.3613 on 148 degrees of freedom
## Multiple R-squared:  0.7551, Adjusted R-squared:  0.7286 
## F-statistic: 28.52 on 16 and 148 DF,  p-value: < 2.2e-16
3.2.2.4.2 Predicción
#Pronóstico para CR
pred_int_MTL_bic_et <- predict(MTL_bic_et, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de intercambio para Costa Rica: `r pred_int_MTL_bic_et.

3.2.3 Modelo de regresión con efectos no lineales

Para permitir la presencia de efectos no lineales en la regresión, se estima una especificación donde se incluyen como potenciales candidatos en la selección del modelo los términos cuadráticos de las variables de control.

3.2.3.1 MENL_aicc

3.2.3.1.1 Estimación

Se proporciona el código completo para su ejecución en R. No obstante, debido al tiempo excesivo que toma el procesamiento automático, se han incorporado manualmente las variables que optimizan el modelo. Estas variables fueron identificadas previamente mediante un proceso de selección realizado en Stata, con el fin de reducir significativamente el tiempo de ejecución en R.

# Ajustar el modelo (automático R)
#modelo_completo_enl <- lm(formula_con_cont_enl, data = datos_int_con_cont_enl)

# Ajustar el modelo (manual, selección previa de variables en Stata)
modelo_completo_enl <- lm(Intercambio ~ Regulacion_intercambio + 
                                     Crimen + Cuenta + Credito + Debito + 
                                     Densidad_Pob + ICH + Pago_digital + 
                                     Europa + Cajero_Autom_sqrt + Crimen_sqrt +      
                                     Cuenta_sqrt + Credito_sqrt + ICH_sqrt +
                                     Pago_digital_sqrt, data = datos_int_con_cont_enl) 

# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MENL_aicc <- dredge(modelo_completo_enl, rank = "AICc", fixed = "Regulacion_intercambio")

# Extraer el mejor modelo según AICc
MENL_aicc <- get.models(MENL_aicc, 1)[[1]]
MENL_aicc
## 
## Call:
## lm(formula = Intercambio ~ Cajero_Autom_sqrt + Credito + Credito_sqrt + 
##     Crimen + Crimen_sqrt + Cuenta + Cuenta_sqrt + Debito + Densidad_Pob + 
##     Europa + ICH + ICH_sqrt + Pago_digital + Pago_digital_sqrt + 
##     1 + Regulacion_intercambio, data = datos_int_con_cont_enl)
## 
## Coefficients:
##            (Intercept)       Cajero_Autom_sqrt                 Credito  
##             -4.442e-01               7.650e-06               2.437e-02  
##           Credito_sqrt                  Crimen             Crimen_sqrt  
##             -1.856e-04              -1.735e-04               3.504e-08  
##                 Cuenta             Cuenta_sqrt                  Debito  
##             -6.249e-02               3.378e-04               5.368e-03  
##           Densidad_Pob                  Europa                     ICH  
##             -5.813e-04              -4.345e-01               1.133e+01  
##               ICH_sqrt            Pago_digital       Pago_digital_sqrt  
##             -8.180e+00               1.844e-02              -2.185e-04  
## Regulacion_intercambio  
##             -6.397e-01
# Errores robustos
MENL_aicc_corr_hc <- coeftest(MENL_aicc, vcov. = vcovHC(MENL_aicc, "HC1", adjust = TRUE, sandwich = TRUE))

MENL_aicc_corr_hac <- coeftest(MENL_aicc, vcov. = vcovHAC(MENL_aicc, adjust = TRUE, sandwich = TRUE))

summary(MENL_aicc)
## 
## Call:
## lm(formula = Intercambio ~ Cajero_Autom_sqrt + Credito + Credito_sqrt + 
##     Crimen + Crimen_sqrt + Cuenta + Cuenta_sqrt + Debito + Densidad_Pob + 
##     Europa + ICH + ICH_sqrt + Pago_digital + Pago_digital_sqrt + 
##     1 + Regulacion_intercambio, data = datos_int_con_cont_enl)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.80337 -0.18315 -0.04127  0.13806  1.01223 
## 
## Coefficients:
##                          Estimate Std. Error t value Pr(>|t|)    
## (Intercept)            -4.442e-01  1.547e+00  -0.287 0.774436    
## Cajero_Autom_sqrt       7.650e-06  4.352e-06   1.758 0.080807 .  
## Credito                 2.437e-02  7.140e-03   3.413 0.000828 ***
## Credito_sqrt           -1.856e-04  7.952e-05  -2.334 0.020912 *  
## Crimen                 -1.735e-04  8.149e-05  -2.129 0.034886 *  
## Crimen_sqrt             3.504e-08  1.498e-08   2.340 0.020622 *  
## Cuenta                 -6.249e-02  2.019e-02  -3.095 0.002348 ** 
## Cuenta_sqrt             3.378e-04  1.463e-04   2.308 0.022368 *  
## Debito                  5.368e-03  2.599e-03   2.065 0.040627 *  
## Densidad_Pob           -5.813e-04  1.589e-04  -3.657 0.000353 ***
## Europa                 -4.345e-01  6.039e-02  -7.195 2.84e-11 ***
## ICH                     1.133e+01  5.011e+00   2.261 0.025215 *  
## ICH_sqrt               -8.180e+00  3.872e+00  -2.113 0.036306 *  
## Pago_digital            1.844e-02  1.223e-02   1.507 0.133969    
## Pago_digital_sqrt      -2.185e-04  1.032e-04  -2.116 0.035979 *  
## Regulacion_intercambio -6.397e-01  5.582e-02 -11.460  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2971 on 149 degrees of freedom
## Multiple R-squared:  0.779,  Adjusted R-squared:  0.7568 
## F-statistic: 35.02 on 15 and 149 DF,  p-value: < 2.2e-16
3.2.3.1.2 Predicción
#Pronóstico para CR
pred_int_MENL_aicc <- predict(MENL_aicc, newdata = data_CR_enl, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de intercambio para Costa Rica: 0.9342216.

3.2.3.2 MENL_bic

3.2.3.2.1 Estimación

Se proporciona el código completo para su ejecución en R. No obstante, debido al tiempo excesivo que toma el procesamiento automático, se han incorporado manualmente las variables que optimizan el modelo. Estas variables fueron identificadas previamente mediante un proceso de selección realizado en Stata, con el fin de reducir significativamente el tiempo de ejecución en R.

# Ajustar el modelo (automático R)
#modelo_completo_enl <- lm(formula_con_cont_enl, data = datos_int_con_cont_enl)

# Ajustar el modelo (manual, selección previa de variables en Stata)
modelo_completo_enl <- lm(Intercambio ~ Regulacion_intercambio +
                                     Cuenta + Credito + Densidad_Pob + 
                                     Europa + Credito_sqrt, data = datos_int_con_cont_enl) 

# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MENL_bic <- dredge(modelo_completo_enl, rank = "BIC", fixed = "Regulacion_intercambio")

# Extraer el mejor modelo según AICc
MENL_bic <- get.models(MENL_bic, 1)[[1]]
MENL_bic
## 
## Call:
## lm(formula = Intercambio ~ Credito + Credito_sqrt + Cuenta + 
##     Densidad_Pob + Europa + 1 + Regulacion_intercambio, data = datos_int_con_cont_enl)
## 
## Coefficients:
##            (Intercept)                 Credito            Credito_sqrt  
##              2.4733383               0.0244131              -0.0002305  
##                 Cuenta            Densidad_Pob                  Europa  
##             -0.0162674              -0.0004966              -0.4312884  
## Regulacion_intercambio  
##             -0.6044180
# Errores robustos
MENL_bic_corr_hc <- coeftest(MENL_bic, vcov. = vcovHC(MENL_bic, "HC1", adjust = TRUE, sandwich = TRUE))

MENL_bic_corr_hac <- coeftest(MENL_bic, vcov. = vcovHAC(MENL_bic, adjust = TRUE, sandwich = TRUE))

summary(MENL_bic)
## 
## Call:
## lm(formula = Intercambio ~ Credito + Credito_sqrt + Cuenta + 
##     Densidad_Pob + Europa + 1 + Regulacion_intercambio, data = datos_int_con_cont_enl)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -0.7681 -0.1732 -0.0818  0.1219  1.0877 
## 
## Coefficients:
##                          Estimate Std. Error t value Pr(>|t|)    
## (Intercept)             2.473e+00  1.146e-01  21.575  < 2e-16 ***
## Credito                 2.441e-02  6.440e-03   3.791 0.000213 ***
## Credito_sqrt           -2.305e-04  6.882e-05  -3.349 0.001015 ** 
## Cuenta                 -1.627e-02  2.302e-03  -7.068 4.76e-11 ***
## Densidad_Pob           -4.966e-04  1.387e-04  -3.582 0.000454 ***
## Europa                 -4.313e-01  5.621e-02  -7.673 1.63e-12 ***
## Regulacion_intercambio -6.044e-01  5.144e-02 -11.751  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.3101 on 158 degrees of freedom
## Multiple R-squared:  0.7448, Adjusted R-squared:  0.7351 
## F-statistic: 76.85 on 6 and 158 DF,  p-value: < 2.2e-16
3.2.3.2.2 Predicción
#Pronóstico para CR
pred_int_MENL_bic <- predict(MENL_bic, newdata = data_CR_enl, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de intercambio para Costa Rica: 0.9868592.

3.2.3.3 MENL_aicc_et **

3.2.3.3.1 Estimación

Se proporciona el código completo para su ejecución en R. No obstante, debido al tiempo excesivo que toma el procesamiento automático, se han incorporado manualmente las variables que optimizan el modelo. Estas variables fueron identificadas previamente mediante un proceso de selección realizado en Stata, con el fin de reducir significativamente el tiempo de ejecución en R.

# Ajustar el modelo (automático R)
#modelo_completo_et_enl <- lm(formula_con_cont_t_enl, data = datos_int_con_cont_enl)

# Ajustar el modelo (manual, selección previa de variables en Stata)
modelo_completo_et_enl <- lm(Intercambio ~ Regulacion_intercambio + 
                                        Crimen + Cuenta + Credito + Debito + 
                                        Densidad_Pob + PIB_pc_PPA + ICH + Pago_digital +                                          Europa + Cajero_Autom_sqrt + Crimen_sqrt + 
                                        Cuenta_sqrt + Credito_sqrt + PIB_pc_PPA_sqrt +
                                        ICH_sqrt + Pago_digital_sqrt + Año_2013 + Año_2014                                         + Año_2015 + Año_2016 + Año_2017 + Año_2018 +
                                        Año_2019 + Año_2020 + Año_2021 + Año_2022 +   
                                        Año_2023 + Año_2024, 
                                        data = datos_int_con_cont_enl) 

# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MENL_aicc_et <- dredge(modelo_completo_et_enl, rank = "AICc", fixed = variables_fijas)

# Extraer el mejor modelo según AICc
MENL_aicc_et <- get.models(MENL_aicc_et, 1)[[1]]
MENL_aicc_et
## 
## Call:
## lm(formula = Intercambio ~ Cajero_Autom_sqrt + Credito + Credito_sqrt + 
##     Crimen_sqrt + Cuenta + Cuenta_sqrt + Debito + Densidad_Pob + 
##     Europa + ICH + ICH_sqrt + Pago_digital + Pago_digital_sqrt + 
##     1 + Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + 
##     Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022 + 
##     Año_2023 + Año_2024 + Regulacion_intercambio, data = datos_int_con_cont_enl)
## 
## Coefficients:
##            (Intercept)       Cajero_Autom_sqrt                 Credito  
##             -1.606e+00               7.840e-06               2.593e-02  
##           Credito_sqrt             Crimen_sqrt                  Cuenta  
##             -2.011e-04               1.206e-08              -7.754e-02  
##            Cuenta_sqrt                  Debito            Densidad_Pob  
##              4.513e-04               4.695e-03              -5.700e-04  
##                 Europa                     ICH                ICH_sqrt  
##             -3.460e-01               1.528e+01              -1.093e+01  
##           Pago_digital       Pago_digital_sqrt                Año_2013  
##              2.433e-02              -2.962e-04              -1.344e-01  
##               Año_2014                Año_2015                Año_2016  
##             -4.623e-02               7.398e-02               1.444e-01  
##               Año_2017                Año_2018                Año_2019  
##              2.483e-02               2.465e-02               1.341e-02  
##               Año_2020                Año_2021                Año_2022  
##              1.644e-01               2.193e-01               1.174e-01  
##               Año_2023                Año_2024  Regulacion_intercambio  
##              2.076e-01               1.399e-01              -6.910e-01
# Errores robustos
MENL_aicc_et_corr_hc <- coeftest(MENL_aicc_et, vcov. = vcovHC(MENL_aicc_et, "HC1", adjust = TRUE, sandwich = TRUE))

MENL_aicc_et_corr_hac <- coeftest(MENL_aicc_et, vcov. = vcovHAC(MENL_aicc_et, adjust = TRUE, sandwich = TRUE))

summary(MENL_aicc_et)
## 
## Call:
## lm(formula = Intercambio ~ Cajero_Autom_sqrt + Credito + Credito_sqrt + 
##     Crimen_sqrt + Cuenta + Cuenta_sqrt + Debito + Densidad_Pob + 
##     Europa + ICH + ICH_sqrt + Pago_digital + Pago_digital_sqrt + 
##     1 + Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + 
##     Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022 + 
##     Año_2023 + Año_2024 + Regulacion_intercambio, data = datos_int_con_cont_enl)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.72309 -0.17903 -0.05867  0.14417  0.92396 
## 
## Coefficients:
##                          Estimate Std. Error t value Pr(>|t|)    
## (Intercept)            -1.606e+00  1.631e+00  -0.984 0.326698    
## Cajero_Autom_sqrt       7.840e-06  4.485e-06   1.748 0.082717 .  
## Credito                 2.593e-02  7.879e-03   3.292 0.001264 ** 
## Credito_sqrt           -2.011e-04  8.555e-05  -2.350 0.020174 *  
## Crimen_sqrt             1.206e-08  6.777e-09   1.780 0.077287 .  
## Cuenta                 -7.754e-02  2.195e-02  -3.532 0.000561 ***
## Cuenta_sqrt             4.513e-04  1.603e-04   2.814 0.005603 ** 
## Debito                  4.695e-03  2.700e-03   1.739 0.084310 .  
## Densidad_Pob           -5.700e-04  1.689e-04  -3.375 0.000958 ***
## Europa                 -3.460e-01  6.687e-02  -5.175 7.89e-07 ***
## ICH                     1.528e+01  5.260e+00   2.904 0.004287 ** 
## ICH_sqrt               -1.093e+01  4.022e+00  -2.716 0.007443 ** 
## Pago_digital            2.433e-02  1.277e-02   1.905 0.058850 .  
## Pago_digital_sqrt      -2.962e-04  1.104e-04  -2.683 0.008178 ** 
## Año_2013               -1.344e-01  2.021e-01  -0.665 0.507270    
## Año_2014               -4.623e-02  2.204e-01  -0.210 0.834208    
## Año_2015                7.398e-02  2.207e-01   0.335 0.738006    
## Año_2016                1.444e-01  2.131e-01   0.678 0.499074    
## Año_2017                2.483e-02  1.905e-01   0.130 0.896503    
## Año_2018                2.465e-02  2.052e-01   0.120 0.904595    
## Año_2019                1.341e-02  2.036e-01   0.066 0.947591    
## Año_2020                1.644e-01  1.935e-01   0.850 0.396984    
## Año_2021                2.193e-01  2.032e-01   1.079 0.282523    
## Año_2022                1.174e-01  2.066e-01   0.568 0.570671    
## Año_2023                2.076e-01  2.055e-01   1.010 0.314273    
## Año_2024                1.399e-01  2.027e-01   0.690 0.491255    
## Regulacion_intercambio -6.910e-01  7.183e-02  -9.620  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.3011 on 138 degrees of freedom
## Multiple R-squared:  0.7898, Adjusted R-squared:  0.7502 
## F-statistic: 19.95 on 26 and 138 DF,  p-value: < 2.2e-16
3.2.3.3.2 Predicción
#Pronóstico para CR
pred_int_MENL_aicc_et <- predict(MENL_aicc_et, newdata = data_CR_enl, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de intercambio para Costa Rica: 1.0385822.

3.2.3.4 MENL_bic_et

3.2.3.4.1 Estimación

Se proporciona el código completo para su ejecución en R. No obstante, debido al tiempo excesivo que toma el procesamiento automático, se han incorporado manualmente las variables que optimizan el modelo. Estas variables fueron identificadas previamente mediante un proceso de selección realizado en Stata, con el fin de reducir significativamente el tiempo de ejecución en R.

# Ajustar el modelo (automático R)
#modelo_completo_et_enl <- lm(formula_con_cont_t_enl, data = datos_int_con_cont_enl)

# Ajustar el modelo (manual, selección previa de variables en Stata)
modelo_completo_et_enl <- lm(Intercambio ~ Regulacion_intercambio + 
                                       Cuenta + Credito + Densidad_Pob + Europa + 
                                       Credito_sqrt + Año_2013 + Año_2014 + Año_2015 + 
                                       Año_2016 + Año_2017 + Año_2018 + Año_2019 + 
                                       Año_2020 + Año_2021 + Año_2022 + Año_2023 +  
                                       Año_2024, data = datos_int_con_cont_enl) 

# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MENL_bic_et <- dredge(modelo_completo_et_enl, rank = "BIC", fixed = variables_fijas)

# Extraer el mejor modelo según AICc
MENL_bic_et <- get.models(MENL_bic_et, 1)[[1]]
MENL_bic_et
## 
## Call:
## lm(formula = Intercambio ~ Credito + Credito_sqrt + Cuenta + 
##     Densidad_Pob + Europa + 1 + Año_2013 + Año_2014 + Año_2015 + 
##     Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + 
##     Año_2021 + Año_2022 + Año_2023 + Año_2024 + Regulacion_intercambio, 
##     data = datos_int_con_cont_enl)
## 
## Coefficients:
##            (Intercept)                 Credito            Credito_sqrt  
##              2.3256480               0.0240545              -0.0002337  
##                 Cuenta            Densidad_Pob                  Europa  
##             -0.0156490              -0.0004298              -0.3865979  
##               Año_2013                Año_2014                Año_2015  
##              0.0124337               0.0701351               0.1630137  
##               Año_2016                Año_2017                Año_2018  
##              0.2340894               0.0337481               0.1205703  
##               Año_2019                Año_2020                Año_2021  
##              0.0959487               0.1729725               0.1563952  
##               Año_2022                Año_2023                Año_2024  
##              0.0580401               0.1521567               0.1527300  
## Regulacion_intercambio  
##             -0.6186405
# Errores robustos
MENL_bic_et_corr_hc <- coeftest(MENL_bic_et, vcov. = vcovHC(MENL_bic_et, "HC1", adjust = TRUE, sandwich = TRUE))

MENL_bic_et_corr_hac <- coeftest(MENL_bic_et, vcov. = vcovHAC(MENL_bic_et, adjust = TRUE, sandwich = TRUE))

summary(MENL_bic_et)
## 
## Call:
## lm(formula = Intercambio ~ Credito + Credito_sqrt + Cuenta + 
##     Densidad_Pob + Europa + 1 + Año_2013 + Año_2014 + Año_2015 + 
##     Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + 
##     Año_2021 + Año_2022 + Año_2023 + Año_2024 + Regulacion_intercambio, 
##     data = datos_int_con_cont_enl)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.71610 -0.16779 -0.06883  0.14041  1.03973 
## 
## Coefficients:
##                          Estimate Std. Error t value Pr(>|t|)    
## (Intercept)             2.326e+00  2.214e-01  10.504  < 2e-16 ***
## Credito                 2.405e-02  6.957e-03   3.458 0.000714 ***
## Credito_sqrt           -2.336e-04  7.389e-05  -3.162 0.001905 ** 
## Cuenta                 -1.565e-02  2.512e-03  -6.229 4.74e-09 ***
## Densidad_Pob           -4.298e-04  1.467e-04  -2.930 0.003935 ** 
## Europa                 -3.866e-01  6.529e-02  -5.922 2.19e-08 ***
## Año_2013                1.243e-02  2.006e-01   0.062 0.950662    
## Año_2014                7.014e-02  2.270e-01   0.309 0.757748    
## Año_2015                1.630e-01  2.278e-01   0.716 0.475334    
## Año_2016                2.341e-01  2.177e-01   1.076 0.283918    
## Año_2017                3.375e-02  1.915e-01   0.176 0.860334    
## Año_2018                1.206e-01  2.103e-01   0.573 0.567281    
## Año_2019                9.595e-02  2.077e-01   0.462 0.644834    
## Año_2020                1.730e-01  2.008e-01   0.861 0.390495    
## Año_2021                1.564e-01  2.104e-01   0.743 0.458460    
## Año_2022                5.804e-02  2.140e-01   0.271 0.786579    
## Año_2023                1.522e-01  2.114e-01   0.720 0.472864    
## Año_2024                1.527e-01  2.096e-01   0.729 0.467378    
## Regulacion_intercambio -6.186e-01  6.691e-02  -9.246 2.61e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.3161 on 146 degrees of freedom
## Multiple R-squared:  0.7549, Adjusted R-squared:  0.7246 
## F-statistic: 24.98 on 18 and 146 DF,  p-value: < 2.2e-16
3.2.3.4.2 Predicción
#Pronóstico para CR
pred_int_MENL_bic_et <- predict(MENL_bic_et, newdata = data_CR_enl, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de intercambio para Costa Rica: 1.0220009.

3.2.4 Método Bootstrap

Una manera alternativa de obtener los intervalos de confianza de las predicciones de las comisiones es mediante el método bootstrap. Este método de remuestreo permite obtener una estimación no paramétrica de la distribución empírica de las comisiones de intercambio y adquirencia.

Para desarrollar este ejercicio, se realizan 1.000 remuestreos, y para cada muestra obtenida se sigue el mismo tipo de análisis presentado en la estimación principal. Esto da como resultado una comisión de adquirencia o intercambio promedio, según sea el caso, para cada iteración.

A continuación, se presenta el código completo en R. No obstante, debido al tiempo estimado de ejecución (aproximadamente 16 horas), los chunks se encuentran deshabilitados.

start_time <- Sys.time()
# Función segura para convertir factores con un solo nivel
convert_factors <- function(df) {
  df %>%
    mutate(across(where(is.factor), ~ if (nlevels(.) < 2) as.character(.) else .))
}

# Configurar plan de ejecución paralela (puedes ajustar el número de workers)


bootstrap_iter <- function(i) {
  cat("Iteración:", i, "\n")
  
  resultado <- list(
    Intercambio_AICC = NA_real_,
    Intercambio_BIC = NA_real_,
    Intercambio_AICC_EF = NA_real_,
    Intercambio_BIC_EF = NA_real_
  )
  
  datos <- readxl::read_excel("D:/Documentos Usuarios/villaltaca/OneDrive - Banco Central de Costa Rica/DIE/Revisiones de documentos/Fijación 2025/Datos y Estimación - Adquirencia e intercambio/Base_datos_adquirencia_intercambio.xlsx")
  
  datos <- datos %>%
    mutate(across(all_of(c("Regulacion_intercambio", "Regulacion_adquirencia",
                           "Europa", "Asia_Este", "Am_lat", "OCDE", "EEE",  
                           "Dato_mas_reciente",
                           paste0("Año_", 2010:2025))), as.factor))
  
  datos_int_con_cont <- datos %>%
    dplyr::select(-Adquirencia) %>%
    na.omit()
  
  data_CR <- datos[which(datos$Codigo_Pais == "CRI"), which(names(datos) != "Adquirencia")]
  
  controles <- c("Cajero_Autom", "Crimen", "Cuenta", "Credito", "Debito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Pago_digital", "Valor_prom", "Europa", "Asia_Este", "Am_lat")
  ef_tiempo <- paste0("Año_", 2013:2025)
  variables_fijas <- c("Regulacion_intercambio", paste0("Año_", 2010:2025))
  
  muestra <- tryCatch({
    temp <- datos_int_con_cont[sample(nrow(datos_int_con_cont), replace = TRUE), ]
    temp <- convert_factors(temp)
    temp <- droplevels(temp)
    
    # Detectar factores con un solo nivel
    factores_un_nivel <- names(Filter(function(x) is.factor(x) && nlevels(x) < 2, temp))
    
    # Ajustar variables de control y efectos fijos
    controles_validos <- setdiff(controles, factores_un_nivel)
    ef_tiempo_validos <- setdiff(ef_tiempo, factores_un_nivel)
    variables_fijas_validas <- setdiff(variables_fijas, factores_un_nivel)
    
    # Crear fórmulas dinámicas
    formula_con_cont <- as.formula(
      paste("Intercambio ~ Regulacion_intercambio +", paste(controles_validos, collapse = " + "))
    )
    
    formula_con_cont_t <- as.formula(
      paste("Intercambio ~ Regulacion_intercambio +", paste(c(controles_validos, ef_tiempo_validos), collapse = " + "))
    )
    
    list(
      muestra = temp,
      formula_con_cont = formula_con_cont,
      formula_con_cont_t = formula_con_cont_t,
      variables_fijas_validas = variables_fijas_validas
    )
    
  }, error = function(e) {
    cat("Error al generar muestra en iteración", i, ":", conditionMessage(e), "\n")
    return(NULL)
  })
  
  if (is.null(muestra)) return(resultado)
  
  temp <- muestra$muestra
  formula_con_cont <- muestra$formula_con_cont
  formula_con_cont_t <- muestra$formula_con_cont_t
  variables_fijas_validas <- muestra$variables_fijas_validas
  
  # AICC sin EF
  tryCatch({
    modelo <- lm(formula_con_cont, data = temp)
    options(na.action = "na.fail")
    modelos <- dredge(modelo, fixed = "Regulacion_intercambio", rank = "AICc")
    modelo <- get.models(modelos, 1)[[1]]
    datos_pred <- rbind(temp, data_CR)
    datos_pred$fitted <- predict(modelo, newdata = datos_pred)
    resultado$Intercambio_AICC <- mean(datos_pred$fitted[datos_pred$Codigo_Pais == "CRI"], na.rm = TRUE)
  }, error = function(e) {
    cat("Error en AICC sin EF, iteración", i, ":", conditionMessage(e), "\n")
  })
  
  # BIC sin EF
  tryCatch({
    modelo <- lm(formula_con_cont, data = temp)
    options(na.action = "na.fail")
    modelos <- dredge(modelo, fixed = "Regulacion_intercambio", rank = "BIC")
    modelo <- get.models(modelos, 1)[[1]]
    datos_pred <- rbind(temp, data_CR)
    datos_pred$fitted <- predict(modelo, newdata = datos_pred)
    resultado$Intercambio_BIC <- mean(datos_pred$fitted[datos_pred$Codigo_Pais == "CRI"], na.rm = TRUE)
  }, error = function(e) {
    cat("Error en BIC sin EF, iteración", i, ":", conditionMessage(e), "\n")
  })
  
  # AICC con EF
  tryCatch({
    modelo <- lm(formula_con_cont_t, data = temp)
    options(na.action = "na.fail")
    modelos <- dredge(modelo, fixed = variables_fijas_validas, rank = "AICc")
    modelo <- get.models(modelos, 1)[[1]]
    datos_pred <- rbind(temp, data_CR)
    datos_pred$fitted <- predict(modelo, newdata = datos_pred)
    resultado$Intercambio_AICC_EF <- mean(datos_pred$fitted[datos_pred$Codigo_Pais == "CRI"], na.rm = TRUE)
  }, error = function(e) {
    cat("Error en AICC con EF, iteración", i, ":", conditionMessage(e), "\n")
  })
  
  # BIC con EF
  tryCatch({
    modelo <- lm(formula_con_cont_t, data = temp)
    options(na.action = "na.fail")
    modelos <- dredge(modelo, fixed = variables_fijas_validas, rank = "BIC")
    modelo <- get.models(modelos, 1)[[1]]
    datos_pred <- rbind(temp, data_CR)
    datos_pred$fitted <- predict(modelo, newdata = datos_pred)
    resultado$Intercambio_BIC_EF <- mean(datos_pred$fitted[datos_pred$Codigo_Pais == "CRI"], na.rm = TRUE)
  }, error = function(e) {
    cat("Error en BIC con EF, iteración", i, ":", conditionMessage(e), "\n")
  })
  
  return(resultado)
}

plan(multisession, workers = parallel::detectCores() - 1)

# Número de iteraciones
n_iter <- 1000

# Ejecutar en paralelo con semilla reproducible
resultados_lista <- future_map(
  1:n_iter,
  bootstrap_iter,
  .progress = TRUE,
  .options = furrr_options(seed = 472195)
)

# Convertir a data.table
resultados <- rbindlist(resultados_lista, fill = TRUE)
## Post Bootstrap
# Calcular el promedio
resultados$Intercambio <- rowMeans(resultados[, c("Intercambio_AICC",
                                                  "Intercambio_BIC",
                                                  "Intercambio_AICC_EF",
                                                  "Intercambio_BIC_EF")])


# Calcular estadísticas descriptivas
media <- mean(resultados$Intercambio, na.rm = TRUE)
mediana <- median(resultados$Intercambio, na.rm = TRUE)


# Formatear con dos decimales
media_fmt <- sprintf("%.2f", media)
mediana_fmt <- sprintf("%.2f", mediana)

# Mostrar resultados
cat("Media:", media_fmt, "\n")
cat("Mediana:", mediana_fmt, "\n")


#Obtener intervalo de confianza del 95% para Intercambio
c1 <- round(quantile(resultados$Intercambio, 0.025), 2)
c2 <- round(quantile(resultados$Intercambio, 0.975), 2)
ci <- quantile(resultados$Intercambio, probs = c(0.025, 0.975))

# Mostrar los valores
cat("IC 95%:", c1, "-", c2, "\n")

#Generar gráfico para Intercambio

p <- ggplot(resultados, aes(x = Intercambio)) +
  geom_histogram(aes(y = after_stat(density)), bins = 30, fill = "lightblue", color = "black") +
  theme_minimal(base_size = 14) +
  labs(
    x = "Comisión de intercambio (%)",
    y = "Densidad",
    title = "Distribución de la Comisión de Intercambio"
  ) +
  annotate("text", x = media, y = 0.5, label = paste0("Media: ", round(media, 2), "%"), size = 5) +
  annotate("text", x = mediana, y = 0.4, label = paste0("Mediana: ", round(mediana, 2), "%"), size = 5) +
  annotate("text", x = mean(ci), y = 0.3,
           label = paste0("IC 95%: [", round(ci[1], 2), "%, ", round(ci[2], 2), "%]"),
           size = 5)
p
end_time <- Sys.time()
duration <- end_time - start_time
cat("Tiempo total de ejecución:", duration, "\n")

3.2.5 Regresión Robusta

El método de regresión robusta permite analizar cambios en los resultados obtenidos producto de observaciones atípicas. Esto se consigue mediante la asignación de ponderadores a cada observación, que varían en sentido inverso a su nivel de influencia (medida por el tamaño de sus residuos), que cambian de manera iterativa hasta alcanzar un punto de convergencia.

3.2.5.1 MRR_aicc

3.2.5.1.1 Estimación
# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MRR_aicc <- dredge(modelo_completo, rank = "AICc", fixed = "Regulacion_intercambio")

# Extraer el mejor modelo según AICc
MRR_aicc <- get.models(MRR_aicc, 1)[[1]]

# Extraer variables seleccionadas
vars_seleccionadas <- names(coef(MRR_aicc))[-1]  # sin intercepto

# Ajustar regresión robusta con las variables seleccionadas

# Paso 1: Ajuste robusto con Huber
formula_robusta <- as.formula(paste("Intercambio ~", paste(vars_seleccionadas, collapse = " + ")))
modelo_huber <- rlm(formula_robusta, data = datos_int_con_cont,  psi = psi.huber)


# Paso 2: Ajuste robusto con Bisquare usando coef iniciales de Huber
modelo_bisquare <- rlm(formula_robusta, data = datos_int_con_cont, psi = psi.bisquare, init = coef(modelo_huber))

MRR_aicc <- modelo_bisquare

#Visualización
stargazer(MRR_aicc, type = "html", 
          title = "Regresión robusta - Modelo AICc sin efectos fijos de tiempo", 
          column.labels = c("MCO"), model.names = F, 
          dep.var.labels = c("Tasa intercambio"), dep.var.caption = "Variable dependiente")
Regresión robusta - Modelo AICc sin efectos fijos de tiempo
Variable dependiente
Tasa intercambio
MCO
Am_lat 0.472***
(0.069)
Asia_Este 0.440***
(0.074)
Cajero_Autom 0.002**
(0.001)
Credito 0.002
(0.002)
Cuenta -0.013***
(0.002)
Regulacion_intercambio -0.584***
(0.048)
Constant 1.927***
(0.156)
Observations 165
Residual Std. Error 0.222 (df = 158)
Note: p<0.1; p<0.05; p<0.01
3.2.5.1.2 Predicción
pred_int_MRR_aicc=predict(MRR_aicc, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de intercambio para Costa Rica: 1.0422995.

3.2.5.2 MRR_bic

3.2.5.2.1 Estimación
# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MRR_bic <- dredge(modelo_completo, rank = "BIC", fixed = "Regulacion_intercambio")

# Extraer el mejor modelo según AICc
MRR_bic <- get.models(MRR_bic, 1)[[1]]

# Extraer variables seleccionadas
vars_seleccionadas <- names(coef(MRR_bic))[-1]  # sin intercepto

# Ajustar regresión robusta con las variables seleccionadas

# Paso 1: Ajuste robusto con Huber
formula_robusta <- as.formula(paste("Intercambio ~", paste(vars_seleccionadas, collapse = " + ")))
modelo_huber <- rlm(formula_robusta, data = datos_int_con_cont,  psi = psi.huber)


# Paso 2: Ajuste robusto con Bisquare usando coef iniciales de Huber
modelo_bisquare <- rlm(formula_robusta, data = datos_int_con_cont, psi = psi.bisquare, init = coef(modelo_huber))

MRR_bic <- modelo_bisquare

#Visualización
stargazer(MRR_bic, type = "html", 
          title = "Regresión robusta - Modelo BIC sin efectos fijos de tiempo", 
          column.labels = c("MCO"), model.names = F, 
          dep.var.labels = c("Tasa intercambio"), dep.var.caption = "Variable dependiente")
Regresión robusta - Modelo BIC sin efectos fijos de tiempo
Variable dependiente
Tasa intercambio
MCO
Am_lat 0.487***
(0.068)
Asia_Este 0.423***
(0.073)
Cajero_Autom 0.002***
(0.001)
Cuenta -0.011***
(0.002)
Regulacion_intercambio -0.565***
(0.047)
Constant 1.814***
(0.136)
Observations 165
Residual Std. Error 0.220 (df = 159)
Note: p<0.1; p<0.05; p<0.01
3.2.5.2.2 Predicción
pred_int_MRR_bic=predict(MRR_bic, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de intercambio para Costa Rica: 1.0796477.

3.2.5.3 MRR_aicc_et

3.2.5.3.1 Estimación
# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MRR_aicc_et <- dredge(modelo_completo_et, rank = "AICc", fixed = variables_fijas)

# Extraer el mejor modelo según AICc
MRR_aicc_et <- get.models(MRR_aicc_et, 1)[[1]]

# Obtener coeficientes
coeficientes <- coef(MRR_aicc_et)

#Filtrar nombres de coeficientes que no sean NA
coeficientes_validos <- names(coeficientes[!is.na(coeficientes)])

# Extraer variables seleccionadas
vars_seleccionadas <- names(coef(MRR_aicc_et))[-1]  # sin intercepto
vars_seleccionadas <- intersect(coeficientes_validos, vars_seleccionadas)

# Ajustar regresión robusta con las variables seleccionadas
# Paso 1: Ajuste robusto con Huber
formula_robusta <- as.formula(paste("Intercambio ~", paste(vars_seleccionadas, collapse = " + ")))

modelo_huber <- rlm(formula_robusta, data = datos_int_con_cont,  psi = psi.huber)

# Paso 2: Ajuste robusto con Bisquare usando coef iniciales de Huber
modelo_bisquare <- rlm(formula_robusta, data = datos_int_con_cont, psi = psi.bisquare, init = coef(modelo_huber))

MRR_aicc_et <- modelo_bisquare

#Visualización
stargazer(MRR_aicc_et, type = "html", 
          title = "Regresión robusta - Modelo AICc con efectos fijos de tiempo", 
          column.labels = c("MCO"), model.names = F, 
          dep.var.labels = c("Tasa intercambio"), dep.var.caption = "Variable dependiente")
Regresión robusta - Modelo AICc con efectos fijos de tiempo
Variable dependiente
Tasa intercambio
MCO
Am_lat 0.467***
(0.073)
Asia_Este 0.372***
(0.077)
Cajero_Autom 0.002**
(0.001)
Cuenta -0.010***
(0.002)
Año_2013 0.300*
(0.174)
Año_2014 0.375*
(0.196)
Año_2015 0.482**
(0.197)
Año_2016 0.373**
(0.188)
Año_2017 0.262
(0.166)
Año_2018 0.469***
(0.181)
Año_2019 0.361**
(0.179)
Año_2020 0.464***
(0.174)
Año_2021 0.456**
(0.182)
Año_2022 0.339*
(0.185)
Año_2023 0.352*
(0.183)
Año_2024 0.358**
(0.182)
Regulacion_intercambio -0.548***
(0.059)
Constant 1.385***
(0.209)
Observations 165
Residual Std. Error 0.198 (df = 147)
Note: p<0.1; p<0.05; p<0.01
3.2.5.3.2 Predicción
pred_int_MRR_aicc_et=predict(MRR_aicc_et, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de intercambio para Costa Rica: 1.07389.

3.2.5.4 MRR_bic_et

3.2.5.4.1 Estimación
# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MRR_bic_et <- dredge(modelo_completo_et, rank = "BIC", fixed = variables_fijas)

# Extraer el mejor modelo según AICc
MRR_bic_et <- get.models(MRR_bic_et, 1)[[1]]

# Obtener coeficientes
coeficientes <- coef(MRR_bic_et)

#Filtrar nombres de coeficientes que no sean NA
coeficientes_validos <- names(coeficientes[!is.na(coeficientes)])

# Extraer variables seleccionadas
vars_seleccionadas <- names(coef(MRR_bic_et))[-1]  # sin intercepto
vars_seleccionadas <- intersect(coeficientes_validos, vars_seleccionadas)

# Ajustar regresión robusta con las variables seleccionadas
# Paso 1: Ajuste robusto con Huber
formula_robusta <- as.formula(paste("Intercambio ~", paste(vars_seleccionadas, collapse = " + ")))

modelo_huber <- rlm(formula_robusta, data = datos_int_con_cont,  psi = psi.huber)

# Paso 2: Ajuste robusto con Bisquare usando coef iniciales de Huber
modelo_bisquare <- rlm(formula_robusta, data = datos_int_con_cont, psi = psi.bisquare, init = coef(modelo_huber))

MRR_bic_et <- modelo_bisquare

#Visualización
stargazer(MRR_bic_et, type = "html", 
          title = "Regresión robusta - Modelo BIC con efectos fijos de tiempo", 
          column.labels = c("MCO"), model.names = F, 
          dep.var.labels = c("Tasa intercambio"), dep.var.caption = "Variable dependiente")
Regresión robusta - Modelo BIC con efectos fijos de tiempo
Variable dependiente
Tasa intercambio
MCO
Am_lat 0.467***
(0.073)
Asia_Este 0.372***
(0.077)
Cajero_Autom 0.002**
(0.001)
Cuenta -0.010***
(0.002)
Año_2013 0.300*
(0.174)
Año_2014 0.375*
(0.196)
Año_2015 0.482**
(0.197)
Año_2016 0.373**
(0.188)
Año_2017 0.262
(0.166)
Año_2018 0.469***
(0.181)
Año_2019 0.361**
(0.179)
Año_2020 0.464***
(0.174)
Año_2021 0.456**
(0.182)
Año_2022 0.339*
(0.185)
Año_2023 0.352*
(0.183)
Año_2024 0.358**
(0.182)
Regulacion_intercambio -0.548***
(0.059)
Constant 1.385***
(0.209)
Observations 165
Residual Std. Error 0.198 (df = 147)
Note: p<0.1; p<0.05; p<0.01
3.2.5.4.2 Predicción
pred_int_MRR_bic_et <- predict(MRR_bic_et, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de intercambio para Costa Rica: 1.07389.

3.2.6 Omitir al Espacio Económico Europeo (EEE) en la estimación

Los países miembros del Espacio Económico (EEE) Europeo sobresalen por contar con las comisiones de intercambio máximas más bajas de la muestra. Si bien existe heterogeneidad en las características sociales, económicas y financieras de sus miembros, es pertinente analizar hasta qué punto las estimaciones obtenidas para Costa Rica pueden ser influenciadas por la regulación de este bloque.

Para esto, se procede a estimar el modelo principal, pero sin considerar los 30 países que conforman el EEE. Además, se enfoca el análisis para el caso de la comisión de intercambio, que es la comisión regulada en el EEE.

#Datos

#Se filtran los datos para excluir países del EEE
datos_sin_EEE <- datos[datos$EEE != 1,]
datos_sin_EEE <- datos_sin_EEE %>%
  select(all_of(variables_interes)) %>%
  na.omit()

3.2.6.1 MOEEE_aicc **

3.2.6.1.1 Estimación
# Ajustar el modelo
modelo_completo_sin_eee <- lm(formula_con_cont, data = datos_sin_EEE)

# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MOEEE_aicc <- dredge(modelo_completo_sin_eee, rank = "AICc", fixed = "Regulacion_intercambio")

# Extraer el mejor modelo según AICc
MOEEE_aicc <- get.models(MOEEE_aicc, 1)[[1]]
MOEEE_aicc

Call: lm(formula = Intercambio ~ Am_lat + Cajero_Autom + Crimen + Cuenta + Debito + Pago_digital + PIB_pc_PPA + Valor_prom + 1 + Regulacion_intercambio, data = datos_sin_EEE)

Coefficients: (Intercept) Am_lat Cajero_Autom
1.708e+00 3.756e-01 4.069e-03
Crimen Cuenta Debito
-2.229e-04 -2.855e-02 1.176e-02
Pago_digital PIB_pc_PPA Valor_prom
9.872e-03 8.833e-06 2.588e-03
Regulacion_intercambio
-6.133e-01

# Errores robustos
MOEEE_aicc_corr_hc <- coeftest(MOEEE_aicc, vcov. = vcovHC(MOEEE_aicc, "HC1", adjust = TRUE, sandwich = TRUE))

MOEEE_aicc_corr_hac <- coeftest(MOEEE_aicc, vcov. = vcovHAC(MOEEE_aicc, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(MOEEE_aicc, MOEEE_aicc_corr_hc,
          type = "html", 
          title = "Estimación omitiendo EEE - Modelo AICc sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F,
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
Estimación omitiendo EEE - Modelo AICc sin efectos fijos de tiempo
Variable dependiente
Tasa intercambio Tasa intercambio
MCO MCO HC
(1) (2)
Am_lat 0.376*** 0.376***
(0.082) (0.073)
Cajero_Autom 0.004*** 0.004***
(0.001) (0.001)
Crimen -0.0002*** -0.0002**
(0.0001) (0.0001)
Cuenta -0.029*** -0.029***
(0.005) (0.005)
Debito 0.012*** 0.012***
(0.002) (0.002)
Pago_digital 0.010** 0.010**
(0.005) (0.005)
PIB_pc_PPA 0.00001** 0.00001
(0.00000) (0.00001)
Valor_prom 0.003*** 0.003***
(0.001) (0.001)
Regulacion_intercambio -0.613*** -0.613***
(0.070) (0.090)
Constant 1.708*** 1.708***
(0.228) (0.213)
Observations 101
R2 0.775
Adjusted R2 0.753
Residual Std. Error 0.276 (df = 91)
F Statistic 34.902*** (df = 9; 91)
Note: p<0.1; p<0.05; p<0.01
3.2.6.1.2 Predicción
#Pronóstico para CR
pred_int_MOEEE_aicc <- predict(MOEEE_aicc, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de intercambio para Costa Rica: 0.9234612.

3.2.6.2 MOEEE_bic **

3.2.6.2.1 Estimación
# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MOEEE_bic <- dredge(modelo_completo_sin_eee, rank = "BIC", fixed = "Regulacion_intercambio")

# Extraer el mejor modelo según AICc
MOEEE_bic <- get.models(MOEEE_bic, 1)[[1]]
MOEEE_bic

Call: lm(formula = Intercambio ~ Am_lat + Asia_Este + Cajero_Autom + Crimen + Cuenta + Debito + PIB_pc_PPA + 1 + Regulacion_intercambio, data = datos_sin_EEE)

Coefficients: (Intercept) Am_lat Asia_Este
1.845e+00 3.715e-01 2.007e-01
Cajero_Autom Crimen Cuenta
3.826e-03 -2.504e-04 -1.926e-02
Debito PIB_pc_PPA Regulacion_intercambio
9.662e-03 1.194e-05 -6.310e-01

# Errores robustos
MOEEE_bic_corr_hc <- coeftest(MOEEE_bic, vcov. = vcovHC(MOEEE_bic, "HC1", adjust = TRUE, sandwich = TRUE))

MOEEE_bic_corr_hac <- coeftest(MOEEE_bic, vcov. = vcovHAC(MOEEE_bic, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(MOEEE_bic, MOEEE_bic_corr_hc, type = "html",
          title = "Estimación omitiendo EEE - Modelo BIC sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
Estimación omitiendo EEE - Modelo BIC sin efectos fijos de tiempo
Variable dependiente
Tasa intercambio Tasa intercambio
MCO MCO HC
(1) (2)
Am_lat 0.372*** 0.372***
(0.081) (0.073)
Asia_Este 0.201** 0.201**
(0.092) (0.098)
Cajero_Autom 0.004*** 0.004***
(0.001) (0.001)
Crimen -0.0003*** -0.0003***
(0.0001) (0.0001)
Cuenta -0.019*** -0.019***
(0.003) (0.003)
Debito 0.010*** 0.010***
(0.002) (0.002)
PIB_pc_PPA 0.00001*** 0.00001**
(0.00000) (0.00001)
Regulacion_intercambio -0.631*** -0.631***
(0.071) (0.080)
Constant 1.845*** 1.845***
(0.165) (0.135)
Observations 101
R2 0.765
Adjusted R2 0.745
Residual Std. Error 0.280 (df = 92)
F Statistic 37.516*** (df = 8; 92)
Note: p<0.1; p<0.05; p<0.01
3.2.6.2.2 Predicción
#Pronóstico para CR
pred_int_MOEEE_bic <- predict(MOEEE_bic, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de intercambio para Costa Rica: 1.052044.

3.2.6.3 MOEEE_aicc_et **

3.2.6.3.1 Estimación
# Ajustar el modelo
modelo_completo_sin_eee_et <- lm(formula_con_cont_t, data = datos_sin_EEE)

# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MOEEE_aicc_et <- dredge(modelo_completo_sin_eee_et, rank = "AICc", fixed = variables_fijas)

# Extraer el mejor modelo según AICc
MOEEE_aicc_et <- get.models(MOEEE_aicc_et, 1)[[1]]
MOEEE_aicc_et

Call: lm(formula = Intercambio ~ Am_lat + Cajero_Autom + Crimen + Cuenta + Debito + Pago_digital + Valor_prom + 1 + Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + Año_2024 + Año_2025 + Regulacion_intercambio, data = datos_sin_EEE)

Coefficients: (Intercept) Am_lat Cajero_Autom
1.6141856 0.3224187 0.0036780
Crimen Cuenta Debito
-0.0001978 -0.0308510 0.0117316
Pago_digital Valor_prom Año_2013
0.0158502 0.0023043 0.0089136
Año_2014 Año_2015 Año_2016
0.3153752 0.3507525 0.4354861
Año_2017 Año_2018 Año_2019
0.2919593 0.2950626 0.2363853
Año_2020 Año_2021 Año_2022
0.1315918 0.1651269 0.1637429
Año_2023 Año_2024 Año_2025
0.1253342 0.0962223 NA
Regulacion_intercambio
-0.5589436

# Errores robustos
MOEEE_aicc_et_corr_hc <- coeftest(MOEEE_aicc_et, vcov. = vcovHC(MOEEE_aicc_et, "HC1", adjust = TRUE, sandwich = TRUE))

MOEEE_aicc_et_corr_hac <- coeftest(MOEEE_aicc_et, vcov. = vcovHAC(MOEEE_aicc_et, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(MOEEE_aicc_et, MOEEE_aicc_et_corr_hc,
          type = "html", 
          title = "Estimación omitiendo EEE - Modelo AICc con efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F,
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
Estimación omitiendo EEE - Modelo AICc con efectos fijos de tiempo
Variable dependiente
Tasa intercambio Tasa intercambio
MCO MCO HC
(1) (2)
Am_lat 0.322*** 0.322***
(0.086) (0.079)
Cajero_Autom 0.004*** 0.004***
(0.001) (0.001)
Crimen -0.0002*** -0.0002***
(0.0001) (0.0001)
Cuenta -0.031*** -0.031***
(0.005) (0.005)
Debito 0.012*** 0.012***
(0.002) (0.002)
Pago_digital 0.016*** 0.016***
(0.005) (0.005)
Valor_prom 0.002** 0.002***
(0.001) (0.001)
Año_2013 0.009 0.009
(0.337) (0.211)
Año_2014 0.315 0.315
(0.218) (0.231)
Año_2015 0.351 0.351
(0.211) (0.238)
Año_2016 0.435** 0.435
(0.206) (0.266)
Año_2017 0.292 0.292
(0.187) (0.222)
Año_2018 0.295 0.295
(0.189) (0.211)
Año_2019 0.236 0.236
(0.187) (0.213)
Año_2020 0.132 0.132
(0.184) (0.211)
Año_2021 0.165 0.165
(0.196) (0.212)
Año_2022 0.164 0.164
(0.195) (0.231)
Año_2023 0.125 0.125
(0.195) (0.225)
Año_2024 0.096 0.096
(0.193) (0.241)
Año_2025
Regulacion_intercambio -0.559*** -0.559***
(0.068) (0.075)
Constant 1.614*** 1.614***
(0.298) (0.317)
Observations 101
R2 0.791
Adjusted R2 0.739
Residual Std. Error 0.283 (df = 80)
F Statistic 15.182*** (df = 20; 80)
Note: p<0.1; p<0.05; p<0.01
3.2.6.3.2 Predicción
#Pronóstico para CR
pred_int_MOEEE_aicc_et <- predict(MOEEE_aicc_et, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de intercambio para Costa Rica: 0.7871114.

3.2.6.4 MOEEE_bic_et **

3.2.6.4.1 Estimación
# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MOEEE_bic_et <- dredge(modelo_completo_sin_eee_et, rank = "BIC", fixed = variables_fijas)

# Extraer el mejor modelo según AICc
MOEEE_bic_et <- get.models(MOEEE_bic_et, 1)[[1]]
MOEEE_bic_et

Call: lm(formula = Intercambio ~ Am_lat + Cajero_Autom + Crimen + Cuenta + Debito + Pago_digital + Valor_prom + 1 + Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + Año_2024 + Año_2025 + Regulacion_intercambio, data = datos_sin_EEE)

Coefficients: (Intercept) Am_lat Cajero_Autom
1.6141856 0.3224187 0.0036780
Crimen Cuenta Debito
-0.0001978 -0.0308510 0.0117316
Pago_digital Valor_prom Año_2013
0.0158502 0.0023043 0.0089136
Año_2014 Año_2015 Año_2016
0.3153752 0.3507525 0.4354861
Año_2017 Año_2018 Año_2019
0.2919593 0.2950626 0.2363853
Año_2020 Año_2021 Año_2022
0.1315918 0.1651269 0.1637429
Año_2023 Año_2024 Año_2025
0.1253342 0.0962223 NA
Regulacion_intercambio
-0.5589436

# Errores robustos
MOEEE_bic_et_corr_hc <- coeftest(MOEEE_bic_et, vcov. = vcovHC(MOEEE_bic_et, "HC1", adjust = TRUE, sandwich = TRUE))

MOEEE_bic_et_corr_hac <- coeftest(MOEEE_bic_et, vcov. = vcovHAC(MOEEE_bic_et, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(MOEEE_bic_et, MOEEE_bic_et_corr_hc, type = "html",
          title = "Estimación omitiendo EEE - Modelo BIC con efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
Estimación omitiendo EEE - Modelo BIC con efectos fijos de tiempo
Variable dependiente
Tasa intercambio Tasa intercambio
MCO MCO HC
(1) (2)
Am_lat 0.322*** 0.322***
(0.086) (0.079)
Cajero_Autom 0.004*** 0.004***
(0.001) (0.001)
Crimen -0.0002*** -0.0002***
(0.0001) (0.0001)
Cuenta -0.031*** -0.031***
(0.005) (0.005)
Debito 0.012*** 0.012***
(0.002) (0.002)
Pago_digital 0.016*** 0.016***
(0.005) (0.005)
Valor_prom 0.002** 0.002***
(0.001) (0.001)
Año_2013 0.009 0.009
(0.337) (0.211)
Año_2014 0.315 0.315
(0.218) (0.231)
Año_2015 0.351 0.351
(0.211) (0.238)
Año_2016 0.435** 0.435
(0.206) (0.266)
Año_2017 0.292 0.292
(0.187) (0.222)
Año_2018 0.295 0.295
(0.189) (0.211)
Año_2019 0.236 0.236
(0.187) (0.213)
Año_2020 0.132 0.132
(0.184) (0.211)
Año_2021 0.165 0.165
(0.196) (0.212)
Año_2022 0.164 0.164
(0.195) (0.231)
Año_2023 0.125 0.125
(0.195) (0.225)
Año_2024 0.096 0.096
(0.193) (0.241)
Año_2025
Regulacion_intercambio -0.559*** -0.559***
(0.068) (0.075)
Constant 1.614*** 1.614***
(0.298) (0.317)
Observations 101
R2 0.791
Adjusted R2 0.739
Residual Std. Error 0.283 (df = 80)
F Statistic 15.182*** (df = 20; 80)
Note: p<0.1; p<0.05; p<0.01
3.2.6.4.2 Predicción
#Pronóstico para CR
pred_int_MOEEE_bic_et <- predict(MOEEE_bic_et, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de intercambio para Costa Rica: 0.7871114.

3.2.7 Restringiendo la muestra a solo países regulados

Como una prueba adicional, se estima el modelo principal, pero luego de restringir la muestra a los países que al igual que Costa Rica, son regulados.

3.2.7.1 MPR_aicc

3.2.7.1.1 Estimación
# Ajustar el modelo
modelo_completo_reg <- lm(formula_con_cont, data = datos_reg)

# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MPR_aicc <- dredge(modelo_completo_reg, rank = "AICc", fixed = "Regulacion_intercambio")

# Extraer el mejor modelo según AICc
MPR_aicc <- get.models(MPR_aicc, 1)[[1]]
MPR_aicc

Call: lm(formula = Intercambio ~ Am_lat + Credito + Crimen + Cuenta + Densidad_Pob + Europa + PIB_pc_PPA + Valor_prom + 1 + Regulacion_intercambio, data = datos_reg)

Coefficients: (Intercept) Am_lat Credito
8.808e-01 5.786e-01 4.681e-03
Crimen Cuenta Densidad_Pob
9.263e-05 -5.740e-03 -5.539e-04
Europa PIB_pc_PPA Valor_prom
-2.702e-01 -3.380e-06 3.705e-03
Regulacion_intercambio
NA

# Errores robustos
MPR_aicc_corr_hc <- coeftest(MPR_aicc, vcov. = vcovHC(MPR_aicc, "HC1", adjust = TRUE, sandwich = TRUE))

MPR_aicc_corr_hac <- coeftest(MPR_aicc, vcov. = vcovHAC(MPR_aicc, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(MPR_aicc, MPR_aicc_corr_hc,
          type = "html", 
          title = "Estimación restringiendo muestra a países regulados - Modelo AICc sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F,
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
Estimación restringiendo muestra a países regulados - Modelo AICc sin efectos fijos de tiempo
Variable dependiente
Tasa intercambio Tasa intercambio
MCO MCO HC
(1) (2)
Am_lat 0.579*** 0.579***
(0.107) (0.098)
Credito 0.005** 0.005***
(0.002) (0.002)
Crimen 0.0001*** 0.0001***
(0.00003) (0.00002)
Cuenta -0.006** -0.006**
(0.002) (0.003)
Densidad_Pob -0.001*** -0.001***
(0.0001) (0.0001)
Europa -0.270*** -0.270***
(0.065) (0.060)
PIB_pc_PPA -0.00000 -0.00000*
(0.00000) (0.00000)
Valor_prom 0.004*** 0.004***
(0.001) (0.001)
Regulacion_intercambio
Constant 0.881*** 0.881***
(0.205) (0.200)
Observations 99
R2 0.785
Adjusted R2 0.766
Residual Std. Error 0.221 (df = 90)
F Statistic 41.107*** (df = 8; 90)
Note: p<0.1; p<0.05; p<0.01
3.2.7.1.2 Predicción
#Pronóstico para CR
pred_int_MPR_aicc <- predict(MPR_aicc, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de intercambio para Costa Rica: 1.2531173.

3.2.7.2 MPR_bic

3.2.7.2.1 Estimación
# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MPR_bic <- dredge(modelo_completo_reg, rank = "BIC", fixed = "Regulacion_intercambio")

# Extraer el mejor modelo según AICc
MPR_bic <- get.models(MPR_bic, 1)[[1]]
MPR_bic

Call: lm(formula = Intercambio ~ Am_lat + Densidad_Pob + Europa + Valor_prom + 1 + Regulacion_intercambio, data = datos_reg)

Coefficients: (Intercept) Am_lat Densidad_Pob
0.6828406 0.6101073 -0.0005321
Europa Valor_prom Regulacion_intercambio
-0.3647495 0.0024911 NA

# Errores robustos
MPR_bic_corr_hc <- coeftest(MPR_bic, vcov. = vcovHC(MPR_bic, "HC1", adjust = TRUE, sandwich = TRUE))

MPR_bic_corr_hac <- coeftest(MPR_bic, vcov. = vcovHAC(MPR_bic, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(MPR_bic, MPR_bic_corr_hc, type = "html",
          title = "Estimación restringiendo muestra a países regulados - Modelo BIC sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
Estimación restringiendo muestra a países regulados - Modelo BIC sin efectos fijos de tiempo
Variable dependiente
Tasa intercambio Tasa intercambio
MCO MCO HC
(1) (2)
Am_lat 0.610*** 0.610***
(0.074) (0.056)
Densidad_Pob -0.001*** -0.001***
(0.0001) (0.0001)
Europa -0.365*** -0.365***
(0.057) (0.053)
Valor_prom 0.002*** 0.002***
(0.001) (0.001)
Regulacion_intercambio
Constant 0.683*** 0.683***
(0.079) (0.071)
Observations 99
R2 0.751
Adjusted R2 0.741
Residual Std. Error 0.233 (df = 94)
F Statistic 70.982*** (df = 4; 94)
Note: p<0.1; p<0.05; p<0.01
3.2.7.2.2 Predicción
#Pronóstico para CR
pred_int_MPR_bic <- predict(MPR_bic, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de intercambio para Costa Rica: 1.3430219.

3.2.7.3 MPR_aicc_et

3.2.7.3.1 Estimación
# Ajustar el modelo
modelo_completo_et_reg <- lm(formula_con_cont_t, data = datos_reg)

# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MPR_aicc_et <- dredge(modelo_completo_et_reg, rank = "AICc", fixed = variables_fijas)

# Extraer el mejor modelo según AICc
MPR_aicc_et <- get.models(MPR_aicc_et, 1)[[1]]
MPR_aicc_et

Call: lm(formula = Intercambio ~ Am_lat + Crimen + Cuenta + Densidad_Pob + Europa + Valor_prom + 1 + Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + Año_2024 + Año_2025 + Regulacion_intercambio, data = datos_reg)

Coefficients: (Intercept) Am_lat Crimen
1.023e+00 5.118e-01 7.992e-05
Cuenta Densidad_Pob Europa
-4.704e-03 -4.428e-04 -3.217e-01
Valor_prom Año_2013 Año_2014
3.113e-03 -4.134e-02 -6.255e-04
Año_2015 Año_2016 Año_2017
-7.118e-02 -1.745e-01 -1.739e-01
Año_2018 Año_2019 Año_2020
-4.992e-02 -1.382e-01 -9.706e-03
Año_2021 Año_2022 Año_2023
1.606e-02 -1.528e-01 -1.705e-01
Año_2024 Año_2025 Regulacion_intercambio
4.833e-02 NA NA

# Errores robustos
MPR_aicc_et_corr_hc <- coeftest(MPR_aicc_et, vcov. = vcovHC(MPR_aicc_et, "HC1", adjust = TRUE, sandwich = TRUE))

MPR_aicc_et_corr_hac <- coeftest(MPR_aicc_et, vcov. = vcovHAC(MPR_aicc_et, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(MPR_aicc_et, MPR_aicc_et_corr_hc,
          type = "html", 
          title = "Estimación restringiendo muestra a países regulados - Modelo AICc con efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F,
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
Estimación restringiendo muestra a países regulados - Modelo AICc con efectos fijos de tiempo
Variable dependiente
Tasa intercambio Tasa intercambio
MCO MCO HC
(1) (2)
Am_lat 0.512*** 0.512***
(0.109) (0.119)
Crimen 0.0001** 0.0001**
(0.00003) (0.00003)
Cuenta -0.005** -0.005*
(0.002) (0.003)
Densidad_Pob -0.0004*** -0.0004***
(0.0001) (0.0001)
Europa -0.322*** -0.322***
(0.071) (0.077)
Valor_prom 0.003*** 0.003***
(0.001) (0.001)
Año_2013 -0.041 -0.041
(0.313) (0.311)
Año_2014 -0.001 -0.001
(0.209) (0.332)
Año_2015 -0.071 -0.071
(0.198) (0.298)
Año_2016 -0.175 -0.175
(0.192) (0.290)
Año_2017 -0.174 -0.174
(0.166) (0.289)
Año_2018 -0.050 -0.050
(0.191) (0.300)
Año_2019 -0.138 -0.138
(0.185) (0.299)
Año_2020 -0.010 -0.010
(0.191) (0.311)
Año_2021 0.016 0.016
(0.193) (0.338)
Año_2022 -0.153 -0.153
(0.188) (0.305)
Año_2023 -0.171 -0.171
(0.186) (0.301)
Año_2024 0.048 0.048
(0.182) (0.328)
Año_2025
Regulacion_intercambio
Constant 1.023*** 1.023***
(0.276) (0.362)
Observations 99
R2 0.801
Adjusted R2 0.756
Residual Std. Error 0.226 (df = 80)
F Statistic 17.909*** (df = 18; 80)
Note: p<0.1; p<0.05; p<0.01
3.2.7.3.2 Predicción
#Pronóstico para CR
pred_int_MPR_aicc_et <- predict(MPR_aicc_et, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de intercambio para Costa Rica: 1.4374467.

3.2.7.4 MPR_bic_et

3.2.7.4.1 Estimación
# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MPR_bic_et <- dredge(modelo_completo_et_reg, rank = "BIC", fixed = variables_fijas)

# Extraer el mejor modelo según AICc
MPR_bic_et <- get.models(MPR_bic_et, 1)[[1]]
MPR_bic_et

Call: lm(formula = Intercambio ~ Am_lat + Crimen + Cuenta + Densidad_Pob + Europa + Valor_prom + 1 + Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + Año_2024 + Año_2025 + Regulacion_intercambio, data = datos_reg)

Coefficients: (Intercept) Am_lat Crimen
1.023e+00 5.118e-01 7.992e-05
Cuenta Densidad_Pob Europa
-4.704e-03 -4.428e-04 -3.217e-01
Valor_prom Año_2013 Año_2014
3.113e-03 -4.134e-02 -6.255e-04
Año_2015 Año_2016 Año_2017
-7.118e-02 -1.745e-01 -1.739e-01
Año_2018 Año_2019 Año_2020
-4.992e-02 -1.382e-01 -9.706e-03
Año_2021 Año_2022 Año_2023
1.606e-02 -1.528e-01 -1.705e-01
Año_2024 Año_2025 Regulacion_intercambio
4.833e-02 NA NA

# Errores robustos
MPR_bic_et_corr_hc <- coeftest(MPR_bic_et, vcov. = vcovHC(MPR_bic_et, "HC1", adjust = TRUE, sandwich = TRUE))

MPR_bic_et_corr_hac <- coeftest(MPR_bic_et, vcov. = vcovHAC(MPR_bic_et, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(MPR_bic_et, MPR_bic_et_corr_hc,
          type = "html", 
          title = "Estimación restringiendo muestra a países regulados - Modelo BIC con efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F,
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
Estimación restringiendo muestra a países regulados - Modelo BIC con efectos fijos de tiempo
Variable dependiente
Tasa intercambio Tasa intercambio
MCO MCO HC
(1) (2)
Am_lat 0.512*** 0.512***
(0.109) (0.119)
Crimen 0.0001** 0.0001**
(0.00003) (0.00003)
Cuenta -0.005** -0.005*
(0.002) (0.003)
Densidad_Pob -0.0004*** -0.0004***
(0.0001) (0.0001)
Europa -0.322*** -0.322***
(0.071) (0.077)
Valor_prom 0.003*** 0.003***
(0.001) (0.001)
Año_2013 -0.041 -0.041
(0.313) (0.311)
Año_2014 -0.001 -0.001
(0.209) (0.332)
Año_2015 -0.071 -0.071
(0.198) (0.298)
Año_2016 -0.175 -0.175
(0.192) (0.290)
Año_2017 -0.174 -0.174
(0.166) (0.289)
Año_2018 -0.050 -0.050
(0.191) (0.300)
Año_2019 -0.138 -0.138
(0.185) (0.299)
Año_2020 -0.010 -0.010
(0.191) (0.311)
Año_2021 0.016 0.016
(0.193) (0.338)
Año_2022 -0.153 -0.153
(0.188) (0.305)
Año_2023 -0.171 -0.171
(0.186) (0.301)
Año_2024 0.048 0.048
(0.182) (0.328)
Año_2025
Regulacion_intercambio
Constant 1.023*** 1.023***
(0.276) (0.362)
Observations 99
R2 0.801
Adjusted R2 0.756
Residual Std. Error 0.226 (df = 80)
F Statistic 17.909*** (df = 18; 80)
Note: p<0.1; p<0.05; p<0.01
3.2.7.4.2 Predicción
#Pronóstico para CR
pred_int_MPR_bic_et <- predict(MPR_bic_et, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de intercambio para Costa Rica: 1.4374467.

3.2.8 Ampliando la definición de regulación de intercambio o adquirencia

En el análisis principal, la variable regulación hace referencia a regulación en las comisiones de intercambio. Esto se debe a que son relativamente pocos los países que regulan adquirencia. Sin embargo, es posible generar una variable dicotómica que haga referencia a que el país en cuestión tiene regulación sobre intercambio o adquirencia.

# Arreglo de datos
datos_reg_amp <- datos

# Crear una nueva variable lógica que sea TRUE si se cumple alguna de las dos condiciones

datos_reg_amp$Regulacion_inter_adq <- ifelse(datos_reg_amp$Regulacion_intercambio == 1 | datos_reg_amp$Regulacion_adquirencia == 1, 1, 0)

#Se filtran los datos
datos_reg_amp <- datos_reg_amp %>%
  select(all_of(variables_interes), Regulacion_inter_adq) %>% 
  select(-Regulacion_intercambio) %>%
  na.omit()

# Crear una nueva variable lógica que sea TRUE si se cumple alguna de las dos condiciones
data_CR_reg_amp <- data_CR
data_CR_reg_amp$Regulacion_inter_adq <- ifelse(data_CR_reg_amp$Regulacion_intercambio == 1 | data_CR_reg_amp$Regulacion_adquirencia == 1, 1, 0)

# Incluir las variables de control sin controles de tiempo
formula_con_cont_amp <- as.formula(
  paste("Intercambio ~ Regulacion_inter_adq +", paste(controles, collapse = " + "))
)

# Incluir las variables de control con controles de tiempo
formula_con_cont_t_amp <- as.formula(
  paste("Intercambio ~ Regulacion_inter_adq +", paste(controles, collapse = " + ")," + ", paste(ef_tiempo, collapse = " + "))
)

# Variables fijas
variables_fijas_amp <- c("Regulacion_inter_adq", paste0("Año_", 2010:2025))

3.2.8.1 MADR_aicc

3.2.8.1.1 Estimación
# Ajustar el modelo
modelo_completo_reg_amp <- lm(formula_con_cont_amp, data = datos_reg_amp)

# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MADR_aicc <- dredge(modelo_completo_reg_amp, rank = "AICc", fixed = "Regulacion_inter_adq")

# Extraer el mejor modelo según AICc
MADR_aicc <- get.models(MADR_aicc, 1)[[1]]
MADR_aicc

Call: lm(formula = Intercambio ~ Am_lat + Asia_Este + Cajero_Autom + Credito + Cuenta + Debito + Pago_digital + 1 + Regulacion_inter_adq, data = datos_reg_amp)

Coefficients: (Intercept) Am_lat Asia_Este
1.889498 0.499405 0.419902
Cajero_Autom Credito Cuenta
0.001832 0.007032 -0.011512
Debito Pago_digital Regulacion_inter_adq
0.003501 -0.006793 -0.549337

# Errores robustos
MADR_aicc_corr_hc <- coeftest(MADR_aicc, vcov. = vcovHC(MADR_aicc, "HC1", adjust = TRUE, sandwich = TRUE))

MADR_aicc_corr_hac <- coeftest(MADR_aicc, vcov. = vcovHAC(MADR_aicc, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(MADR_aicc, MADR_aicc_corr_hc,
          type = "html", 
          title = "Estimación ampliando definición de regulación - Modelo AICc sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F,
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
Estimación ampliando definición de regulación - Modelo AICc sin efectos fijos de tiempo
Variable dependiente
Tasa intercambio Tasa intercambio
MCO MCO HC
(1) (2)
Am_lat 0.499*** 0.499***
(0.080) (0.087)
Asia_Este 0.420*** 0.420***
(0.085) (0.074)
Cajero_Autom 0.002** 0.002**
(0.001) (0.001)
Credito 0.007*** 0.007**
(0.003) (0.003)
Cuenta -0.012*** -0.012***
(0.004) (0.004)
Debito 0.004 0.004
(0.002) (0.002)
Pago_digital -0.007* -0.007**
(0.004) (0.003)
Regulacion_inter_adq -0.549*** -0.549***
(0.056) (0.065)
Constant 1.889*** 1.889***
(0.199) (0.201)
Observations 165
R2 0.729
Adjusted R2 0.715
Residual Std. Error 0.321 (df = 156)
F Statistic 52.556*** (df = 8; 156)
Note: p<0.1; p<0.05; p<0.01
3.2.8.1.2 Predicción
#Pronóstico para CR
pred_int_MADR_aicc <- predict(MADR_aicc, newdata = data_CR_reg_amp, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de intercambio para Costa Rica: 1.1604306.

3.2.8.2 MADR_bic

3.2.8.2.1 Estimación
# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MADR_bic <- dredge(modelo_completo_reg_amp, rank = "BIC", fixed = "Regulacion_inter_adq")

# Extraer el mejor modelo según AICc
MADR_bic <- get.models(MADR_bic, 1)[[1]]
MADR_bic

Call: lm(formula = Intercambio ~ Am_lat + Asia_Este + Cajero_Autom + Cuenta + 1 + Regulacion_inter_adq, data = datos_reg_amp)

Coefficients: (Intercept) Am_lat Asia_Este
1.800356 0.511526 0.431246
Cajero_Autom Cuenta Regulacion_inter_adq
0.002801 -0.011263 -0.543328

# Errores robustos
MADR_bic_corr_hc <- coeftest(MADR_bic, vcov. = vcovHC(MADR_bic, "HC1", adjust = TRUE, sandwich = TRUE))

MADR_bic_corr_hac <- coeftest(MADR_bic, vcov. = vcovHAC(MADR_bic, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(MADR_bic, MADR_bic_corr_hc, type = "html",
          title = "Estimación ampliando definición de regulación - Modelo BIC sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
Estimación ampliando definición de regulación - Modelo BIC sin efectos fijos de tiempo
Variable dependiente
Tasa intercambio Tasa intercambio
MCO MCO HC
(1) (2)
Am_lat 0.512*** 0.512***
(0.079) (0.085)
Asia_Este 0.431*** 0.431***
(0.085) (0.078)
Cajero_Autom 0.003*** 0.003***
(0.001) (0.001)
Cuenta -0.011*** -0.011***
(0.002) (0.002)
Regulacion_inter_adq -0.543*** -0.543***
(0.054) (0.061)
Constant 1.800*** 1.800***
(0.158) (0.158)
Observations 165
R2 0.717
Adjusted R2 0.708
Residual Std. Error 0.326 (df = 159)
F Statistic 80.405*** (df = 5; 159)
Note: p<0.1; p<0.05; p<0.01
3.2.8.2.2 Predicción
#Pronóstico para CR
pred_int_MADR_bic <- predict(MADR_bic, newdata = data_CR_reg_amp, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de intercambio para Costa Rica: 1.1415073.

3.2.8.3 MADR_aicc_et **

3.2.8.3.1 Estimación
# Ajustar el modelo
modelo_completo_t_reg_amp <- lm(formula_con_cont_t_amp, data = datos_reg_amp)

# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MADR_aicc_et <- dredge(modelo_completo_t_reg_amp, rank = "AICc", fixed = variables_fijas_amp)

# Extraer el mejor modelo según AICc
MADR_aicc_et <- get.models(MADR_aicc_et, 1)[[1]]
MADR_aicc_et

Call: lm(formula = Intercambio ~ Am_lat + Asia_Este + Cajero_Autom + Cuenta + 1 + Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + Año_2024 + Año_2025 + Regulacion_inter_adq, data = datos_reg_amp)

Coefficients: (Intercept) Am_lat Asia_Este
1.680345 0.464056 0.362880
Cajero_Autom Cuenta Año_2013
0.002489 -0.010628 0.052650
Año_2014 Año_2015 Año_2016
0.122411 0.185755 0.325962
Año_2017 Año_2018 Año_2019
0.015501 0.187690 0.152471
Año_2020 Año_2021 Año_2022
0.201530 0.184808 0.094086
Año_2023 Año_2024 Año_2025
0.175935 0.159066 NA
Regulacion_inter_adq
-0.547755

# Errores robustos
MADR_aicc_et_corr_hc <- coeftest(MADR_aicc_et, vcov. = vcovHC(MADR_aicc_et, "HC1", adjust = TRUE, sandwich = TRUE))

MADR_aicc_et_corr_hac <- coeftest(MADR_aicc_et, vcov. = vcovHAC(MADR_aicc_et, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(MADR_aicc_et, MADR_aicc_et_corr_hc,
          type = "html", 
          title = "Estimación ampliando definición de regulación - Modelo AICc con efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F,
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
Estimación ampliando definición de regulación - Modelo AICc con efectos fijos de tiempo
Variable dependiente
Tasa intercambio Tasa intercambio
MCO MCO HC
(1) (2)
Am_lat 0.464*** 0.464***
(0.087) (0.093)
Asia_Este 0.363*** 0.363***
(0.091) (0.081)
Cajero_Autom 0.002*** 0.002***
(0.001) (0.001)
Cuenta -0.011*** -0.011***
(0.002) (0.002)
Año_2013 0.053 0.053
(0.208) (0.282)
Año_2014 0.122 0.122
(0.234) (0.286)
Año_2015 0.186 0.186
(0.235) (0.282)
Año_2016 0.326 0.326
(0.225) (0.334)
Año_2017 0.016 0.016
(0.198) (0.266)
Año_2018 0.188 0.188
(0.216) (0.279)
Año_2019 0.152 0.152
(0.214) (0.283)
Año_2020 0.202 0.202
(0.208) (0.274)
Año_2021 0.185 0.185
(0.217) (0.281)
Año_2022 0.094 0.094
(0.221) (0.278)
Año_2023 0.176 0.176
(0.218) (0.285)
Año_2024 0.159 0.159
(0.217) (0.291)
Año_2025
Regulacion_inter_adq -0.548*** -0.548***
(0.071) (0.086)
Constant 1.680*** 1.680***
(0.250) (0.310)
Observations 165
R2 0.734
Adjusted R2 0.703
Residual Std. Error 0.328 (df = 147)
F Statistic 23.827*** (df = 17; 147)
Note: p<0.1; p<0.05; p<0.01
3.2.8.3.2 Predicción
#Pronóstico para CR
pred_int_MADR_aicc_et <- predict(MADR_aicc_et, newdata = data_CR_reg_amp, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de intercambio para Costa Rica: 1.1542655.

3.2.8.4 MADR_bic_et

3.2.8.4.1 Estimación
# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MADR_bic_et <- dredge(modelo_completo_t_reg_amp, rank = "BIC", fixed = variables_fijas_amp)

# Extraer el mejor modelo según AICc
MADR_bic_et <- get.models(MADR_bic_et, 1)[[1]]
MADR_bic_et

Call: lm(formula = Intercambio ~ Am_lat + Asia_Este + Cajero_Autom + Cuenta + 1 + Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + Año_2024 + Año_2025 + Regulacion_inter_adq, data = datos_reg_amp)

Coefficients: (Intercept) Am_lat Asia_Este
1.680345 0.464056 0.362880
Cajero_Autom Cuenta Año_2013
0.002489 -0.010628 0.052650
Año_2014 Año_2015 Año_2016
0.122411 0.185755 0.325962
Año_2017 Año_2018 Año_2019
0.015501 0.187690 0.152471
Año_2020 Año_2021 Año_2022
0.201530 0.184808 0.094086
Año_2023 Año_2024 Año_2025
0.175935 0.159066 NA
Regulacion_inter_adq
-0.547755

# Errores robustos
MADR_bic_et_corr_hc <- coeftest(MADR_bic_et, vcov. = vcovHC(MADR_bic_et, "HC1", adjust = TRUE, sandwich = TRUE))

MADR_bic_et_corr_hac <- coeftest(MADR_bic_et, vcov. = vcovHAC(MADR_bic_et, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(MADR_bic_et, MADR_bic_et_corr_hc,
          type = "html", 
          title = "Estimación ampliando definición de regulación - Modelo BIC con efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F,
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
Estimación ampliando definición de regulación - Modelo BIC con efectos fijos de tiempo
Variable dependiente
Tasa intercambio Tasa intercambio
MCO MCO HC
(1) (2)
Am_lat 0.464*** 0.464***
(0.087) (0.093)
Asia_Este 0.363*** 0.363***
(0.091) (0.081)
Cajero_Autom 0.002*** 0.002***
(0.001) (0.001)
Cuenta -0.011*** -0.011***
(0.002) (0.002)
Año_2013 0.053 0.053
(0.208) (0.282)
Año_2014 0.122 0.122
(0.234) (0.286)
Año_2015 0.186 0.186
(0.235) (0.282)
Año_2016 0.326 0.326
(0.225) (0.334)
Año_2017 0.016 0.016
(0.198) (0.266)
Año_2018 0.188 0.188
(0.216) (0.279)
Año_2019 0.152 0.152
(0.214) (0.283)
Año_2020 0.202 0.202
(0.208) (0.274)
Año_2021 0.185 0.185
(0.217) (0.281)
Año_2022 0.094 0.094
(0.221) (0.278)
Año_2023 0.176 0.176
(0.218) (0.285)
Año_2024 0.159 0.159
(0.217) (0.291)
Año_2025
Regulacion_inter_adq -0.548*** -0.548***
(0.071) (0.086)
Constant 1.680*** 1.680***
(0.250) (0.310)
Observations 165
R2 0.734
Adjusted R2 0.703
Residual Std. Error 0.328 (df = 147)
F Statistic 23.827*** (df = 17; 147)
Note: p<0.1; p<0.05; p<0.01
3.2.8.4.2 Predicción
#Pronóstico para CR
pred_int_MADR_bic_et <- predict(MADR_bic_et, newdata = data_CR_reg_amp, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de intercambio para Costa Rica: 1.1542655.

3.2.9 Regresión que utilice las características observadas más recientes para cada país

La estimación principal utiliza las características observadas para los países al momento de la fijación de determinado porcentaje de comisión. Una forma alternativa de estimar el modelo es considerar para cada país las comisiones de intercambio o de adquirencia vigentes y las características observables más recientes, que en la mayoría de los países corresponde a información para el 2024.

#Datos
datos_2024 <- read_excel("D:/Documentos Usuarios/villaltaca/OneDrive - Banco Central de Costa Rica/DIE/Revisiones de documentos/Fijación 2025/Datos y Estimación - Adquirencia e intercambio/Base_datos_adquirencia_intercambio_2024.xlsx")

datos_2024 <- datos_2024 %>% 
  dplyr :: select(-Adquirencia, -Regulacion_adquirencia) %>% 
  na.omit

3.2.9.1 MCR_aicc

3.2.9.1.1 Estimación
# Ajustar el modelo
modelo_completo_2024 <- lm(formula_con_cont, data = datos_2024)

# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MCR_aicc <- dredge(modelo_completo_2024, rank = "AICc", fixed = "Regulacion_intercambio")

# Extraer el mejor modelo según AICc
MCR_aicc <- get.models(MCR_aicc, 1)[[1]]
MCR_aicc

Call: lm(formula = Intercambio ~ Am_lat + Asia_Este + Cajero_Autom + Cuenta + 1 + Regulacion_intercambio, data = datos_2024)

Coefficients: (Intercept) Am_lat Asia_Este
1.690101 0.554716 0.574214
Cajero_Autom Cuenta Regulacion_intercambio
0.002191 -0.007224 -0.804485

# Errores robustos
MCR_aicc_corr_hc <- coeftest(MCR_aicc, vcov. = vcovHC(MCR_aicc, "HC1", adjust = TRUE, sandwich = TRUE))

MCR_aicc_corr_hac <- coeftest(MCR_aicc, vcov. = vcovHAC(MCR_aicc, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(MCR_aicc, MCR_aicc_corr_hc,
          type = "html", 
          title = "Estimación usando características más recientes - Modelo AICc sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F,
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
Estimación usando características más recientes - Modelo AICc sin efectos fijos de tiempo
Variable dependiente
Tasa intercambio Tasa intercambio
MCO MCO HC
(1) (2)
Am_lat 0.555*** 0.555***
(0.117) (0.153)
Asia_Este 0.574*** 0.574***
(0.131) (0.173)
Cajero_Autom 0.002** 0.002**
(0.001) (0.001)
Cuenta -0.007*** -0.007**
(0.003) (0.003)
Regulacion_intercambio -0.804*** -0.804***
(0.110) (0.140)
Constant 1.690*** 1.690***
(0.205) (0.239)
Observations 54
R2 0.814
Adjusted R2 0.794
Residual Std. Error 0.244 (df = 48)
F Statistic 41.952*** (df = 5; 48)
Note: p<0.1; p<0.05; p<0.01
3.2.9.1.2 Predicción
#Pronóstico para CR
pred_int_MCR_aicc <- predict(MCR_aicc, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de intercambio para Costa Rica: 1.0630252.

3.2.9.2 MCR_bic

3.2.9.2.1 Estimación
# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MCR_bic <- dredge(modelo_completo_2024, rank = "BIC", fixed = "Regulacion_intercambio")

# Extraer el mejor modelo según AICc
MCR_bic <- get.models(MCR_bic, 1)[[1]]
MCR_bic

Call: lm(formula = Intercambio ~ Am_lat + Asia_Este + Cajero_Autom + Cuenta + 1 + Regulacion_intercambio, data = datos_2024)

Coefficients: (Intercept) Am_lat Asia_Este
1.690101 0.554716 0.574214
Cajero_Autom Cuenta Regulacion_intercambio
0.002191 -0.007224 -0.804485

# Errores robustos
MCR_bic_corr_hc <- coeftest(MCR_bic, vcov. = vcovHC(MCR_bic, "HC1", adjust = TRUE, sandwich = TRUE))

MCR_bic_corr_hac <- coeftest(MCR_bic, vcov. = vcovHAC(MCR_bic, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(MCR_bic, MCR_bic_corr_hc,
          type = "html", 
          title = "Estimación usando características más recientes - Modelo BIC sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F,
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
Estimación usando características más recientes - Modelo BIC sin efectos fijos de tiempo
Variable dependiente
Tasa intercambio Tasa intercambio
MCO MCO HC
(1) (2)
Am_lat 0.555*** 0.555***
(0.117) (0.153)
Asia_Este 0.574*** 0.574***
(0.131) (0.173)
Cajero_Autom 0.002** 0.002**
(0.001) (0.001)
Cuenta -0.007*** -0.007**
(0.003) (0.003)
Regulacion_intercambio -0.804*** -0.804***
(0.110) (0.140)
Constant 1.690*** 1.690***
(0.205) (0.239)
Observations 54
R2 0.814
Adjusted R2 0.794
Residual Std. Error 0.244 (df = 48)
F Statistic 41.952*** (df = 5; 48)
Note: p<0.1; p<0.05; p<0.01
3.2.9.2.2 Predicción
#Pronóstico para CR
pred_int_MCR_bic <- predict(MCR_bic, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de intercambio para Costa Rica: 1.0630252.

3.2.10 Regresión con variables propuestas por el Fondo Monetario Internacional (FMI)

El Fondo Monetario Internacional (FMI) publicó en diciembre de 2023 el estudio “Determinants of Card Payments Fees in A Cross-Country Analysis”, donde se replica y amplía el análisis de comparación internacional que realiza el BCCR para establecer los topes máximos de comisiones. La forma de ampliar el estudio fue incorporar las variables margen de interés neto y el grado de concentración de activos bancarios.

# Datos
datos_fmi <- datos %>%
  select(all_of(variables_interes), c("Margen_neto", "Concentracion_bancaria")) %>%
  na.omit()

#Definir el conjunto de posibles variables de control

controles_fmi <- c("Cajero_Autom", "Crimen", "Cuenta", "Credito", "Debito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Pago_digital", "Valor_prom", "Europa", "Asia_Este", "Am_lat", "Margen_neto", "Concentracion_bancaria")

# Incluir las variables de control
formula_con_cont_fmi <- as.formula(
  paste("Intercambio ~ Regulacion_intercambio +", paste(controles_fmi, collapse = " + "))
)

# Incluir las variables de control
formula_con_cont_t_fmi <- as.formula(
  paste("Intercambio ~ Regulacion_intercambio +", paste(controles_fmi, collapse = " + ")," + ", paste(ef_tiempo, collapse = " + "))
)

3.2.10.1 MFMI_aicc

3.2.10.1.1 Estimación
# Ajustar el modelo
modelo_completo_fmi <- lm(formula_con_cont_fmi, data = datos_fmi)

# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MFMI_aicc <- dredge(modelo_completo_fmi, rank = "AICc", fixed = "Regulacion_intercambio")

# Extraer el mejor modelo según AICc
MFMI_aicc <- get.models(MFMI_aicc, 1)[[1]]
MFMI_aicc

Call: lm(formula = Intercambio ~ Am_lat + Asia_Este + Cajero_Autom + Credito + Cuenta + Debito + Densidad_Neg + Margen_neto + Valor_prom + 1 + Regulacion_intercambio, data = datos_fmi)

Coefficients: (Intercept) Am_lat Asia_Este
1.221699 0.357154 0.473576
Cajero_Autom Credito Cuenta
0.001821 0.005898 -0.012104
Debito Densidad_Neg Margen_neto
0.003892 -0.009845 0.090940
Valor_prom Regulacion_intercambio
0.001352 -0.602290

# Errores robustos
MFMI_aicc_corr_hc <- coeftest(MFMI_aicc, vcov. = vcovHC(MFMI_aicc, "HC1", adjust = TRUE, sandwich = TRUE))

MFMI_aicc_corr_hac <- coeftest(MFMI_aicc, vcov. = vcovHAC(MFMI_aicc, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(MFMI_aicc, MFMI_aicc_corr_hc,
          type = "html", 
          title = "Réplica análisis FMI - Modelo AICc sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F,
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
Réplica análisis FMI - Modelo AICc sin efectos fijos de tiempo
Variable dependiente
Tasa intercambio Tasa intercambio
MCO MCO HC
(1) (2)
Am_lat 0.357*** 0.357***
(0.077) (0.097)
Asia_Este 0.474*** 0.474***
(0.084) (0.099)
Cajero_Autom 0.002** 0.002**
(0.001) (0.001)
Credito 0.006*** 0.006***
(0.002) (0.002)
Cuenta -0.012*** -0.012***
(0.003) (0.003)
Debito 0.004** 0.004**
(0.002) (0.002)
Densidad_Neg -0.010* -0.010
(0.006) (0.007)
Margen_neto 0.091*** 0.091***
(0.016) (0.019)
Valor_prom 0.001 0.001*
(0.001) (0.001)
Regulacion_intercambio -0.602*** -0.602***
(0.049) (0.059)
Constant 1.222*** 1.222***
(0.232) (0.252)
Observations 165
R2 0.793
Adjusted R2 0.780
Residual Std. Error 0.283 (df = 154)
F Statistic 59.022*** (df = 10; 154)
Note: p<0.1; p<0.05; p<0.01
3.2.10.1.2 Predicción
#Pronóstico para CR
pred_int_MFMI_aicc <- predict(MFMI_aicc, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de intercambio para Costa Rica: 1.0353081.

3.2.10.2 MFMI_bic

3.2.10.2.1 Estimación
# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MFMI_bic <- dredge(modelo_completo_fmi, rank = "BIC", fixed = "Regulacion_intercambio")

# Extraer el mejor modelo según AICc
MFMI_bic <- get.models(MFMI_bic, 1)[[1]]
MFMI_bic

Call: lm(formula = Intercambio ~ Am_lat + Asia_Este + Credito + Cuenta + Margen_neto + 1 + Regulacion_intercambio, data = datos_fmi)

Coefficients: (Intercept) Am_lat Asia_Este
1.478107 0.345818 0.500564
Credito Cuenta Margen_neto
0.006863 -0.009858 0.088562
Regulacion_intercambio
-0.608656

# Errores robustos
MFMI_bic_corr_hc <- coeftest(MFMI_bic, vcov. = vcovHC(MFMI_bic, "HC1", adjust = TRUE, sandwich = TRUE))

MFMI_bic_corr_hac <- coeftest(MFMI_bic, vcov. = vcovHAC(MFMI_bic, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(MFMI_bic, MFMI_bic_corr_hc,
          type = "html", 
          title = "Réplica análisis FMI - Modelo BIC sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F,
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
Réplica análisis FMI - Modelo BIC sin efectos fijos de tiempo
Variable dependiente
Tasa intercambio Tasa intercambio
MCO MCO HC
(1) (2)
Am_lat 0.346*** 0.346***
(0.076) (0.088)
Asia_Este 0.501*** 0.501***
(0.076) (0.073)
Credito 0.007*** 0.007***
(0.002) (0.002)
Cuenta -0.010*** -0.010***
(0.002) (0.002)
Margen_neto 0.089*** 0.089***
(0.016) (0.019)
Regulacion_intercambio -0.609*** -0.609***
(0.049) (0.057)
Constant 1.478*** 1.478***
(0.191) (0.208)
Observations 165
R2 0.776
Adjusted R2 0.767
Residual Std. Error 0.291 (df = 158)
F Statistic 91.131*** (df = 6; 158)
Note: p<0.1; p<0.05; p<0.01
3.2.10.2.2 Predicción
#Pronóstico para CR
pred_int_MFMI_bic <- predict(MFMI_bic, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de intercambio para Costa Rica: 1.0787672.

3.2.10.3 MFMI_aicc_et

3.2.10.3.1 Estimación
# Ajustar el modelo con controles
modelo_completo_fmi_et <- lm(formula_con_cont_t_fmi, data = datos_fmi)

# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MFMI_aicc_et <- dredge(modelo_completo_fmi_et, rank = "AICc", fixed = variables_fijas)

# Extraer el mejor modelo según AICc
MFMI_aicc_et <- get.models(MFMI_aicc_et, 1)[[1]]
MFMI_aicc_et

Call: lm(formula = Intercambio ~ Asia_Este + Cajero_Autom + Cuenta + Debito + Densidad_Neg + Europa + Margen_neto + PIB_pc_PPA + 1 + Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + Año_2024 + Año_2025 + Regulacion_intercambio, data = datos_fmi)

Coefficients: (Intercept) Asia_Este Cajero_Autom
1.565e+00 2.314e-01 2.098e-03
Cuenta Debito Densidad_Neg
-1.284e-02 5.895e-03 -1.635e-02
Europa Margen_neto PIB_pc_PPA
-2.671e-01 9.953e-02 3.960e-06
Año_2013 Año_2014 Año_2015
-7.369e-02 1.347e-01 2.001e-01
Año_2016 Año_2017 Año_2018
9.123e-02 -5.314e-02 7.390e-02
Año_2019 Año_2020 Año_2021
7.121e-03 5.487e-02 1.321e-01
Año_2022 Año_2023 Año_2024
1.212e-01 1.263e-01 1.139e-01
Año_2025 Regulacion_intercambio
NA -6.746e-01

# Errores robustos
MFMI_aicc_et_corr_hc <- coeftest(MFMI_aicc_et, vcov. = vcovHC(MFMI_aicc_et, "HC1", adjust = TRUE, sandwich = TRUE))

MFMI_aicc_et_corr_hac <- coeftest(MFMI_aicc_et, vcov. = vcovHAC(MFMI_aicc_et, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(MFMI_aicc_et, MFMI_aicc_et_corr_hc,
          type = "html", 
          title = "Réplica análisis FMI - Modelo AICc con efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F,
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
Réplica análisis FMI - Modelo AICc con efectos fijos de tiempo
Variable dependiente
Tasa intercambio Tasa intercambio
MCO MCO HC
(1) (2)
Asia_Este 0.231** 0.231**
(0.096) (0.108)
Cajero_Autom 0.002*** 0.002**
(0.001) (0.001)
Cuenta -0.013*** -0.013***
(0.003) (0.003)
Debito 0.006*** 0.006***
(0.002) (0.002)
Densidad_Neg -0.016*** -0.016**
(0.006) (0.008)
Europa -0.267*** -0.267***
(0.070) (0.079)
Margen_neto 0.100*** 0.100***
(0.017) (0.021)
PIB_pc_PPA 0.00000** 0.00000**
(0.00000) (0.00000)
Año_2013 -0.074 -0.074
(0.184) (0.164)
Año_2014 0.135 0.135
(0.206) (0.172)
Año_2015 0.200 0.200
(0.207) (0.160)
Año_2016 0.091 0.091
(0.200) (0.173)
Año_2017 -0.053 -0.053
(0.175) (0.136)
Año_2018 0.074 0.074
(0.191) (0.153)
Año_2019 0.007 0.007
(0.188) (0.158)
Año_2020 0.055 0.055
(0.182) (0.144)
Año_2021 0.132 0.132
(0.191) (0.163)
Año_2022 0.121 0.121
(0.194) (0.165)
Año_2023 0.126 0.126
(0.193) (0.173)
Año_2024 0.114 0.114
(0.191) (0.158)
Año_2025
Regulacion_intercambio -0.675*** -0.675***
(0.063) (0.076)
Constant 1.565*** 1.565***
(0.249) (0.244)
Observations 165
R2 0.801
Adjusted R2 0.772
Residual Std. Error 0.288 (df = 143)
F Statistic 27.459*** (df = 21; 143)
Note: p<0.1; p<0.05; p<0.01
3.2.10.3.2 Predicción
#Pronóstico para CR
pred_int_MFMI_aicc_et <- predict(MFMI_aicc_et, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de intercambio para Costa Rica: 1.1184572.

3.2.10.4 MFMI_bic_et **

3.2.10.4.1 Estimación
# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MFMI_bic_et <- dredge(modelo_completo_fmi_et, rank = "BIC", fixed = variables_fijas)

# Extraer el mejor modelo según AICc
MFMI_bic_et <- get.models(MFMI_bic_et, 1)[[1]]
MFMI_bic_et

Call: lm(formula = Intercambio ~ Am_lat + Asia_Este + Cajero_Autom + Cuenta + Margen_neto + 1 + Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + Año_2024 + Año_2025 + Regulacion_intercambio, data = datos_fmi)

Coefficients: (Intercept) Am_lat Asia_Este
1.122328 0.314228 0.393236
Cajero_Autom Cuenta Margen_neto
0.002387 -0.006072 0.083879
Año_2013 Año_2014 Año_2015
0.043178 0.198578 0.264758
Año_2016 Año_2017 Año_2018
0.211992 0.017096 0.181149
Año_2019 Año_2020 Año_2021
0.110906 0.116199 0.152257
Año_2022 Año_2023 Año_2024
0.124039 0.223723 0.153623
Año_2025 Regulacion_intercambio
NA -0.584298

# Errores robustos
MFMI_bic_et_corr_hc <- coeftest(MFMI_bic_et, vcov. = vcovHC(MFMI_bic_et, "HC1", adjust = TRUE, sandwich = TRUE))

MFMI_bic_et_corr_hac <- coeftest(MFMI_bic_et, vcov. = vcovHAC(MFMI_bic_et, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(MFMI_bic_et, MFMI_bic_et_corr_hc,
          type = "html", 
          title = "Réplica análisis FMI - Modelo BIC con efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F,
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
Réplica análisis FMI - Modelo BIC con efectos fijos de tiempo
Variable dependiente
Tasa intercambio Tasa intercambio
MCO MCO HC
(1) (2)
Am_lat 0.314*** 0.314***
(0.083) (0.093)
Asia_Este 0.393*** 0.393***
(0.082) (0.078)
Cajero_Autom 0.002*** 0.002***
(0.001) (0.001)
Cuenta -0.006*** -0.006***
(0.002) (0.002)
Margen_neto 0.084*** 0.084***
(0.018) (0.019)
Año_2013 0.043 0.043
(0.187) (0.175)
Año_2014 0.199 0.199
(0.211) (0.190)
Año_2015 0.265 0.265
(0.211) (0.175)
Año_2016 0.212 0.212
(0.202) (0.189)
Año_2017 0.017 0.017
(0.178) (0.152)
Año_2018 0.181 0.181
(0.194) (0.168)
Año_2019 0.111 0.111
(0.192) (0.174)
Año_2020 0.116 0.116
(0.188) (0.164)
Año_2021 0.152 0.152
(0.195) (0.172)
Año_2022 0.124 0.124
(0.198) (0.172)
Año_2023 0.224 0.224
(0.196) (0.183)
Año_2024 0.154 0.154
(0.195) (0.175)
Año_2025
Regulacion_intercambio -0.584*** -0.584***
(0.063) (0.080)
Constant 1.122*** 1.122***
(0.256) (0.240)
Observations 165
R2 0.787
Adjusted R2 0.760
Residual Std. Error 0.295 (df = 146)
F Statistic 29.916*** (df = 18; 146)
Note: p<0.1; p<0.05; p<0.01
3.2.10.4.2 Predicción
#Pronóstico para CR
pred_int_MFMI_bic_et <- predict(MFMI_bic_et, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de intercambio para Costa Rica: 1.1573627.

3.2.11 Regresión con variables instrumentales

Una posible observación es que las comisiones de intercambio y adquirencia afectan la adopción de tarjetas de pago, y estas a su vez afectan las comisiones, lo que introduciría un sesgo de endogeneidad en las estimaciones. Para atender esta observación se recurre a dos enfoques.

El primer enfoque consiste en estimar la especificación principal, pero sin considerar como variables explicativas la información relativa directamente al uso de tarjetas.

Para el segundo enfoque, se plantea un modelo de variables instrumentales. En este caso, se instrumenta el valor promedio de la transacción realizada con tarjetas de pago con el Índice de Capital Humano.

3.2.11.1 Enfoque1: regresión sin variables relacionadas al uso de tarjetas

En esta regresión se estima la especificación principal, pero sin considerar como variables explicativas la información relativa directamente al uso de tarjetas. De esta manera, se excluye el porcentaje de adultos con tarjeta de crédito o débito, el porcentaje de adultos con cuenta en una institución financiera, el porcentaje de adultos que realizaron o recibieron un pago digital, el número de cajeros automáticos, y el valor de la transacción promedio realizada con tarjetas de pago.

3.2.11.1.1 MSVR_aicc
3.2.11.1.1.1 Estimación
# Ajustar el modelo
modelo_completo_red <- lm(formula_con_cont_red, data = datos_red)

# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MSVR_aicc <- dredge(modelo_completo_red, rank = "AICc", fixed = "Regulacion_intercambio")

# Extraer el mejor modelo según AICc
MSVR_aicc <- get.models(MSVR_aicc, 1)[[1]]
MSVR_aicc

Call: lm(formula = Intercambio ~ Am_lat + Densidad_Neg + Densidad_Pob + Europa + ICH + 1 + Regulacion_intercambio, data = datos_red)

Coefficients: (Intercept) Am_lat Densidad_Neg
2.0592928 0.2407698 -0.0141550
Densidad_Pob Europa ICH
-0.0005072 -0.3955685 -0.6523637
Regulacion_intercambio
-0.5825081

# Errores robustos
MSVR_aicc_corr_hc <- coeftest(MSVR_aicc, vcov. = vcovHC(MSVR_aicc, "HC1", adjust = TRUE, sandwich = TRUE))

MSVR_aicc_corr_hac <- coeftest(MSVR_aicc, vcov. = vcovHAC(MSVR_aicc, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(MSVR_aicc, MSVR_aicc_corr_hc,
          type = "html", 
          title = "Regresión sin variables relacionadas al uso de tarjetas - Modelo AICc sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F,
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
Regresión sin variables relacionadas al uso de tarjetas - Modelo AICc sin efectos fijos de tiempo
Variable dependiente
Tasa intercambio Tasa intercambio
MCO MCO HC
(1) (2)
Am_lat 0.241** 0.241***
(0.099) (0.091)
Densidad_Neg -0.014** -0.014***
(0.006) (0.005)
Densidad_Pob -0.001*** -0.001***
(0.0002) (0.0001)
Europa -0.396*** -0.396***
(0.074) (0.065)
ICH -0.652 -0.652
(0.413) (0.467)
Regulacion_intercambio -0.583*** -0.583***
(0.056) (0.066)
Constant 2.059*** 2.059***
(0.286) (0.292)
Observations 183
R2 0.684
Adjusted R2 0.673
Residual Std. Error 0.336 (df = 176)
F Statistic 63.517*** (df = 6; 176)
Note: p<0.1; p<0.05; p<0.01
3.2.11.1.1.2 Predicción
#Pronóstico para CR
pred_int_MSVR_aicc <- predict(MSVR_aicc, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de intercambio para Costa Rica: 1.1748581.

3.2.11.1.2 MSVR_bic
3.2.11.1.2.1 Estimación
# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MSVR_bic <- dredge(modelo_completo_red, rank = "BIC", fixed = "Regulacion_intercambio")

# Extraer el mejor modelo según AICc
MSVR_bic <- get.models(MSVR_bic, 1)[[1]]
MSVR_bic

Call: lm(formula = Intercambio ~ Am_lat + Densidad_Neg + Densidad_Pob + Europa + 1 + Regulacion_intercambio, data = datos_red)

Coefficients: (Intercept) Am_lat Densidad_Neg
1.6345974 0.2982565 -0.0166513
Densidad_Pob Europa Regulacion_intercambio
-0.0005114 -0.4048348 -0.6058010

# Errores robustos
MSVR_bic_corr_hc<-coeftest(MSVR_bic, vcov. = vcovHC(MSVR_bic, "HC1", adjust = TRUE, sandwich = TRUE))

MSVR_bic_corr_hac<-coeftest(MSVR_bic, vcov. = vcovHAC(MSVR_bic, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(MSVR_bic, MSVR_bic_corr_hc,
          type = "html", 
          title = "Regresión sin variables relacionadas al uso de tarjetas - Modelo BIC  sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F,
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
Regresión sin variables relacionadas al uso de tarjetas - Modelo BIC sin efectos fijos de tiempo
Variable dependiente
Tasa intercambio Tasa intercambio
MCO MCO HC
(1) (2)
Am_lat 0.298*** 0.298***
(0.092) (0.085)
Densidad_Neg -0.017*** -0.017***
(0.006) (0.004)
Densidad_Pob -0.001*** -0.001***
(0.0002) (0.0001)
Europa -0.405*** -0.405***
(0.074) (0.059)
Regulacion_intercambio -0.606*** -0.606***
(0.054) (0.059)
Constant 1.635*** 1.635***
(0.097) (0.096)
Observations 183
R2 0.680
Adjusted R2 0.671
Residual Std. Error 0.338 (df = 177)
F Statistic 75.087*** (df = 5; 177)
Note: p<0.1; p<0.05; p<0.01
3.2.11.1.2.2 Predicción
#Pronóstico para CR
pred_int_MSVR_bic <- predict(MSVR_bic, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de intercambio para Costa Rica: 1.1795552.

3.2.11.1.3 MSVR_aicc_et **
3.2.11.1.3.1 Estimación
# Ajustar el modelo
modelo_completo_et_red <- lm(formula_con_cont_t_red, data = datos_red)

# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MSVR_aicc_et <- dredge(modelo_completo_et_red, rank = "AICc", fixed = variables_fijas)

# Extraer el mejor modelo según AICc
MSVR_aicc_et <- get.models(MSVR_aicc_et, 1)[[1]]
MSVR_aicc_et

Call: lm(formula = Intercambio ~ Am_lat + Asia_Este + Densidad_Neg + 1 + Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + Año_2024 + Año_2025 + Regulacion_intercambio, data = datos_red)

Coefficients: (Intercept) Am_lat Asia_Este
1.271169 0.623751 0.363622
Densidad_Neg Año_2013 Año_2014
-0.014812 -0.192938 -0.011033
Año_2015 Año_2016 Año_2017
0.113874 0.154948 -0.114348
Año_2018 Año_2019 Año_2020
0.099553 0.063468 0.066739
Año_2021 Año_2022 Año_2023
-0.006949 -0.007009 0.019281
Año_2024 Año_2025 Regulacion_intercambio
0.026589 -0.183917 -0.631364

# Errores robustos
MSVR_aicc_et_corr_hc <- coeftest(MSVR_aicc_et, vcov. = vcovHC(MSVR_aicc_et, "HC1", adjust = TRUE, sandwich = TRUE))

MSVR_aicc_et_corr_hac <- coeftest(MSVR_aicc_et, vcov. = vcovHAC(MSVR_aicc_et, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(MSVR_aicc_et, MSVR_aicc_et_corr_hc,
          type = "html", 
          title = "Regresión sin variables relacionadas al uso de tarjetas - Modelo AICc con efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F,
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
Regresión sin variables relacionadas al uso de tarjetas - Modelo AICc con efectos fijos de tiempo
Variable dependiente
Tasa intercambio Tasa intercambio
MCO MCO HC
(1) (2)
Am_lat 0.624*** 0.624***
(0.070) (0.076)
Asia_Este 0.364*** 0.364***
(0.098) (0.084)
Densidad_Neg -0.015** -0.015***
(0.006) (0.005)
Año_2013 -0.193 -0.193
(0.162) (0.156)
Año_2014 -0.011 -0.011
(0.191) (0.164)
Año_2015 0.114 0.114
(0.185) (0.179)
Año_2016 0.155 0.155
(0.181) (0.203)
Año_2017 -0.114 -0.114
(0.153) (0.150)
Año_2018 0.100 0.100
(0.174) (0.173)
Año_2019 0.063 0.063
(0.167) (0.169)
Año_2020 0.067 0.067
(0.163) (0.158)
Año_2021 -0.007 -0.007
(0.174) (0.163)
Año_2022 -0.007 -0.007
(0.178) (0.184)
Año_2023 0.019 0.019
(0.179) (0.166)
Año_2024 0.027 0.027
(0.178) (0.189)
Año_2025 -0.184 -0.184
(0.242) (0.308)
Regulacion_intercambio -0.631*** -0.631***
(0.067) (0.080)
Constant 1.271*** 1.271***
(0.153) (0.149)
Observations 183
R2 0.695
Adjusted R2 0.664
Residual Std. Error 0.341 (df = 165)
F Statistic 22.144*** (df = 17; 165)
Note: p<0.1; p<0.05; p<0.01
3.2.11.1.3.2 Predicción
#Pronóstico para CR
pred_int_MSVR_aicc_et <- predict(MSVR_aicc_et, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de intercambio para Costa Rica: 1.2042193.

3.2.11.1.4 MSVR_bic_et **
3.2.11.1.4.1 Estimación
# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MSVR_bic_et <- dredge(modelo_completo_et_red, rank = "BIC", fixed = variables_fijas)

# Extraer el mejor modelo según AICc
MSVR_bic_et <- get.models(MSVR_bic_et, 1)[[1]]
MSVR_bic_et

Call: lm(formula = Intercambio ~ Am_lat + Asia_Este + Densidad_Neg + 1 + Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + Año_2024 + Año_2025 + Regulacion_intercambio, data = datos_red)

Coefficients: (Intercept) Am_lat Asia_Este
1.271169 0.623751 0.363622
Densidad_Neg Año_2013 Año_2014
-0.014812 -0.192938 -0.011033
Año_2015 Año_2016 Año_2017
0.113874 0.154948 -0.114348
Año_2018 Año_2019 Año_2020
0.099553 0.063468 0.066739
Año_2021 Año_2022 Año_2023
-0.006949 -0.007009 0.019281
Año_2024 Año_2025 Regulacion_intercambio
0.026589 -0.183917 -0.631364

# Errores robustos
MSVR_bic_et_corr_hc <- coeftest(MSVR_bic_et, vcov. = vcovHC(MSVR_bic_et, "HC1", adjust = TRUE, sandwich = TRUE))

MSVR_bic_et_corr_hac <- coeftest(MSVR_bic_et, vcov. = vcovHAC(MSVR_bic_et, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(MSVR_bic_et, MSVR_bic_et_corr_hc,
          type = "html", 
          title = "Regresión con variables relacionadas al uso de tarjetas - Modelo BIC con efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F,
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
Regresión con variables relacionadas al uso de tarjetas - Modelo BIC con efectos fijos de tiempo
Variable dependiente
Tasa intercambio Tasa intercambio
MCO MCO HC
(1) (2)
Am_lat 0.624*** 0.624***
(0.070) (0.076)
Asia_Este 0.364*** 0.364***
(0.098) (0.084)
Densidad_Neg -0.015** -0.015***
(0.006) (0.005)
Año_2013 -0.193 -0.193
(0.162) (0.156)
Año_2014 -0.011 -0.011
(0.191) (0.164)
Año_2015 0.114 0.114
(0.185) (0.179)
Año_2016 0.155 0.155
(0.181) (0.203)
Año_2017 -0.114 -0.114
(0.153) (0.150)
Año_2018 0.100 0.100
(0.174) (0.173)
Año_2019 0.063 0.063
(0.167) (0.169)
Año_2020 0.067 0.067
(0.163) (0.158)
Año_2021 -0.007 -0.007
(0.174) (0.163)
Año_2022 -0.007 -0.007
(0.178) (0.184)
Año_2023 0.019 0.019
(0.179) (0.166)
Año_2024 0.027 0.027
(0.178) (0.189)
Año_2025 -0.184 -0.184
(0.242) (0.308)
Regulacion_intercambio -0.631*** -0.631***
(0.067) (0.080)
Constant 1.271*** 1.271***
(0.153) (0.149)
Observations 183
R2 0.695
Adjusted R2 0.664
Residual Std. Error 0.341 (df = 165)
F Statistic 22.144*** (df = 17; 165)
Note: p<0.1; p<0.05; p<0.01
3.2.11.1.4.2 Predicción
#Pronóstico para CR
pred_int_MSVR_bic_et <- predict(MSVR_bic_et, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de intercambio para Costa Rica: 1.2042193.

3.2.11.2 Enfoque2: modelo con variables instrumentales

Para el segundo enfoque, se plantea un modelo de variables instrumentales. En este caso, se instrumenta el valor promedio de la transacción realizada con tarjetas de pago con el Índice de Capital Humano. Este índice incorpora una medición del nivel educativo de un país, que es una característica del cliente que puede estar relacionada con su disposición a adoptar y utilizar tecnologías de pago distintas al efectivo.

Dado que esta característica impacta el lado de la demanda, es posible utilizar el índice como un instrumento para trazar la oferta.

3.2.11.2.1 Modelo sin efectos de tiempo
3.2.11.2.1.1 Estimación
#Regresión
modelo_vi <- ivreg(formula_vi,data = datos_vi)
modelo_vi

Call: ivreg(formula = formula_vi, data = datos_vi)

Coefficients: (Intercept) Regulacion_intercambio Crimen
1.328e+00 -5.778e-01 -1.820e-05
Densidad_Pob Densidad_Neg PIB_pc_PPA
-4.852e-04 -8.947e-03 9.383e-10
Europa Asia_Este Am_lat
-3.277e-01 6.287e-02 4.142e-01
Valor_prom
2.515e-03

# Errores robustos
modelo_vi_corr_hc <- coeftest(modelo_vi, vcov. = vcovHC(modelo_vi, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_vi_corr_hac <- coeftest(modelo_vi, vcov. = vcovHAC(modelo_vi, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(modelo_vi, modelo_vi_corr_hc, type = "html", 
          title = "Regresión con variables instrumentales - Sin efectos fijos de tiempo", 
          column.labels = c("Instrumental","Instrumental HC"), model.names = F, 
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
Regresión con variables instrumentales - Sin efectos fijos de tiempo
Variable dependiente
Tasa intercambio Tasa intercambio
Instrumental Instrumental HC
(1) (2)
Regulacion_intercambio -0.578*** -0.578***
(0.067) (0.091)
Crimen -0.00002 -0.00002
(0.00005) (0.0001)
Densidad_Pob -0.0005* -0.0005*
(0.0003) (0.0003)
Densidad_Neg -0.009 -0.009
(0.008) (0.010)
PIB_pc_PPA 0.000 0.000
(0.00000) (0.00000)
Europa -0.328** -0.328***
(0.136) (0.121)
Asia_Este 0.063 0.063
(0.217) (0.284)
Am_lat 0.414*** 0.414***
(0.148) (0.129)
Valor_prom 0.003 0.003
(0.003) (0.003)
Constant 1.328*** 1.328***
(0.293) (0.287)
Observations 167
R2 0.696
Adjusted R2 0.679
Residual Std. Error 0.340 (df = 157)
Note: p<0.1; p<0.05; p<0.01
3.2.11.2.1.2 Predicción
#Pronósticos para Costa Rica
pred_int_vi <- predict(modelo_vi, newdata = data_CR,
                                   interval = "prediction", level = 0.95,
                                   type = "response")[which(data_CR$Codigo_Pais=="CRI")]

Predicción tasa de intercambio para Costa Rica: 1.1442735.

3.2.11.2.2 Modelo con efectos de tiempo
3.2.11.2.2.1 Estimación
#Regresión
modelo_vi_et <- ivreg(formula_vi_et,data = datos_vi)
modelo_vi_et

Call: ivreg(formula = formula_vi_et, data = datos_vi)

Coefficients: (Intercept) Regulacion_intercambio Crimen
1.071e+00 -6.036e-01 2.966e-06
Densidad_Pob Densidad_Neg PIB_pc_PPA
-4.170e-04 -6.922e-03 -3.881e-07
Europa Asia_Este Am_lat
-2.517e-01 5.977e-02 4.385e-01
Valor_prom Año_2012 Año_2013
2.320e-03 -5.890e-02 1.063e-01
Año_2014 Año_2015 Año_2016
2.142e-01 3.396e-01 3.797e-01
Año_2017 Año_2018 Año_2019
1.613e-01 3.031e-01 2.903e-01
Año_2020 Año_2021 Año_2022
2.759e-01 2.476e-01 1.232e-01
Año_2023 Año_2024 Año_2025
2.740e-01 2.459e-01 NA

# Errores robustos
modelo_vi_et_corr_hc <- coeftest(modelo_vi_et, vcov. = vcovHC(modelo_vi_et, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_vi_et_corr_hac <- coeftest(modelo_vi_et, vcov. = vcovHAC(modelo_vi_et, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(modelo_vi_et, modelo_vi_et_corr_hc, type = "html", 
          title = "Regresión con variables instrumentales - Con efectos fijos de tiempo", 
          column.labels = c("Instrumental","Instrumental HC"), model.names = F, 
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
Regresión con variables instrumentales - Con efectos fijos de tiempo
Variable dependiente
Tasa intercambio Tasa intercambio
Instrumental Instrumental HC
(1) (2)
Regulacion_intercambio -0.604*** -0.604***
(0.082) (0.119)
Crimen 0.00000 0.00000
(0.0001) (0.0001)
Densidad_Pob -0.0004 -0.0004
(0.0003) (0.0003)
Densidad_Neg -0.007 -0.007
(0.008) (0.010)
PIB_pc_PPA -0.00000 -0.00000
(0.00000) (0.00000)
Europa -0.252* -0.252*
(0.144) (0.138)
Asia_Este 0.060 0.060
(0.214) (0.295)
Am_lat 0.438*** 0.438***
(0.158) (0.132)
Valor_prom 0.002 0.002
(0.003) (0.003)
Año_2012 -0.059 -0.059
(0.423) (0.377)
Año_2013 0.106 0.106
(0.230) (0.343)
Año_2014 0.214 0.214
(0.254) (0.355)
Año_2015 0.340 0.340
(0.252) (0.350)
Año_2016 0.380 0.380
(0.245) (0.361)
Año_2017 0.161 0.161
(0.219) (0.324)
Año_2018 0.303 0.303
(0.236) (0.345)
Año_2019 0.290 0.290
(0.239) (0.359)
Año_2020 0.276 0.276
(0.231) (0.334)
Año_2021 0.248 0.248
(0.256) (0.369)
Año_2022 0.123 0.123
(0.246) (0.343)
Año_2023 0.274 0.274
(0.265) (0.342)
Año_2024 0.246 0.246
(0.243) (0.354)
Año_2025
Constant 1.071** 1.071**
(0.415) (0.525)
Observations 167
R2 0.714
Adjusted R2 0.670
Residual Std. Error 0.345 (df = 144)
Note: p<0.1; p<0.05; p<0.01
3.2.11.2.2.2 Predicción
#Pronósticos para Costa Rica
pred_int_vi_et <- predict(modelo_vi_et, newdata = data_CR,
                                   interval = "prediction", level = 0.95,
                                   type = "response")[which(data_CR$Codigo_Pais=="CRI")]

Predicción tasa de intercambio para Costa Rica: 1.1597495.

3.2.12 Modelo de panel de datos con efectos aleatorios

La base de datos recopilada para este estudio contiene para algunos países el seguimiento del comportamiento de las comisiones de adquirencia e intercambio a lo largo del tiempo. Este seguimiento, sin embargo, es limitado. Para el 74% de los países se disponen como máximo de dos observaciones. No obstante, es posible considerar en el presente análisis de sensibilidad un modelo de datos de panel que permita explorar el papel de la heterogeneidad no observable en los resultados.

Para este ejercicio, se utiliza un modelo de efectos aleatorios. Esto ya que Costa Rica no se incluye en la estimación del modelo, sino hasta que se realiza el pronóstico, lo que hace poco práctico un modelo de efectos fijos si el objetivo final del modelo es obtener valores esperados de las comisiones para Costa Rica.

3.2.12.1 MPDEA_aicc

3.2.12.1.1 Estimación
# Modelo completo
modelo_completo_panel <- lm(formula_con_cont, data = datos_int_con_cont_panel)

# Selección hacia atrás con AICc, fijando Regulacion_intercambio
MPDEA_aicc <- dredge(modelo_completo_panel, fixed = "Regulacion_intercambio", rank = "AICc")

# Extraer el mejor modelo
MPDEA_aicc <- get.models(MPDEA_aicc, 1)[[1]]

# Ver variables seleccionadas
var_panel <- names(coef(MPDEA_aicc))[-1]  # excluye intercepto
var_panel <- var_panel[var_panel != "Regulacion_intercambio"]

# Fórmula para lmer
formula_lmer <- as.formula(paste("Intercambio ~ Regulacion_intercambio +", paste(var_panel, collapse = " + "), " + (1 | Codigo_Pais)" ))

#Regresión con efectos aleatorios y errores agrupados
MPDEA_aicc <- lmer(formula_lmer, data = pdata)

resultado_panel_aicc <- summary(MPDEA_aicc)

summary(MPDEA_aicc)
## Linear mixed model fit by REML ['lmerMod']
## Formula: 
## Intercambio ~ Regulacion_intercambio + Am_lat + Asia_Este + Cajero_Autom +  
##     Credito + Cuenta + (1 | Codigo_Pais)
##    Data: pdata
## 
## REML criterion at convergence: 45.7
## 
## Scaled residuals: 
##      Min       1Q   Median       3Q      Max 
## -2.21570 -0.43591 -0.06307  0.38433  2.52498 
## 
## Random effects:
##  Groups      Name        Variance Std.Dev.
##  Codigo_Pais (Intercept) 0.06646  0.2578  
##  Residual                0.03431  0.1852  
## Number of obs: 165, groups:  Codigo_Pais, 54
## 
## Fixed effects:
##                         Estimate Std. Error t value
## (Intercept)             1.916259   0.187777  10.205
## Regulacion_intercambio -0.670520   0.041546 -16.139
## Am_lat                  0.598171   0.128893   4.641
## Asia_Este               0.570179   0.153309   3.719
## Cajero_Autom            0.001334   0.001027   1.300
## Credito                 0.005439   0.002600   2.092
## Cuenta                 -0.012459   0.002506  -4.972
## 
## Correlation of Fixed Effects:
##             (Intr) Rglcn_ Am_lat As_Est Cjr_At Credit
## Rglcn_ntrcm -0.058                                   
## Am_lat      -0.429  0.008                            
## Asia_Este    0.009 -0.020  0.051                     
## Cajero_Autm -0.300  0.068 -0.049  0.022              
## Credito      0.353 -0.076 -0.031 -0.126 -0.365       
## Cuenta      -0.863 -0.058  0.341 -0.021  0.028 -0.579
3.2.12.1.2 Predicción
#Nombre de variables
var_finales <- attr(terms(MPDEA_aicc), "term.labels")

#Pronóstico
Caso_CR <- datos %>% filter(Codigo_Pais=="CRI") %>% dplyr::select(var_finales)
Caso_CR <- cbind(1,Caso_CR) # agregar un 1 para que se multiple con el intercepto general

pred_int_MPDEA_aicc <- sum(resultado_panel_aicc$coefficients*Caso_CR)

Predicción tasa de intercambio para Costa Rica: 1.1249385.

3.2.12.2 MPDEA_bic

3.2.12.2.1 Estimación
# Selección hacia atrás con AICc, fijando Regulacion_intercambio
MPDEA_bic <- dredge(modelo_completo_panel, fixed = "Regulacion_intercambio", rank = "BIC")

# Extraer el mejor modelo
MPDEA_bic <- get.models(MPDEA_bic, 1)[[1]]

# Ver variables seleccionadas
var_panel <- names(coef(MPDEA_bic))[-1]  # excluye intercepto
var_panel <- var_panel[var_panel != "Regulacion_intercambio"]

# Fórmula para lmer
formula_lmer <- as.formula(paste("Intercambio ~ Regulacion_intercambio +", paste(var_panel, collapse = " + "), " + (1 | Codigo_Pais)" ))

#Regresión con efectos aleatorios y errores agrupados
# Modelo de efectos aleatorios
MPDEA_bic <- lmer(formula_lmer, data = pdata)

# Resumen con errores agrupados por id
resultado_panel_bic <- summary(MPDEA_bic)

summary(MPDEA_bic)
## Linear mixed model fit by REML ['lmerMod']
## Formula: 
## Intercambio ~ Regulacion_intercambio + Am_lat + Asia_Este + Cajero_Autom +  
##     Cuenta + (1 | Codigo_Pais)
##    Data: pdata
## 
## REML criterion at convergence: 40
## 
## Scaled residuals: 
##      Min       1Q   Median       3Q      Max 
## -2.19004 -0.44114 -0.03142  0.41928  2.65112 
## 
## Random effects:
##  Groups      Name        Variance Std.Dev.
##  Codigo_Pais (Intercept) 0.06997  0.2645  
##  Residual                0.03467  0.1862  
## Number of obs: 165, groups:  Codigo_Pais, 54
## 
## Fixed effects:
##                          Estimate Std. Error t value
## (Intercept)             1.7794947  0.1785331   9.967
## Regulacion_intercambio -0.6644180  0.0417193 -15.926
## Am_lat                  0.6066170  0.1317382   4.605
## Asia_Este               0.6121815  0.1554851   3.937
## Cajero_Autom            0.0020962  0.0009724   2.156
## Cuenta                 -0.0094249  0.0020744  -4.543
## 
## Correlation of Fixed Effects:
##             (Intr) Rglcn_ Am_lat As_Est Cjr_At
## Rglcn_ntrcm -0.032                            
## Am_lat      -0.445  0.005                     
## Asia_Este    0.057 -0.029  0.048              
## Cajero_Autm -0.199  0.044 -0.064 -0.025       
## Cuenta      -0.863 -0.126  0.393 -0.116 -0.240
3.2.12.2.2 Predicción
#Nombre de variables
var_finales <- attr(terms(MPDEA_bic), "term.labels")

#Pronóstico
Caso_CR <- datos %>% filter(Codigo_Pais=="CRI") %>% dplyr::select(var_finales)
Caso_CR <- cbind(1,Caso_CR) # agregar un 1 para que se multiple con el intercepto general

pred_int_MPDEA_bic <- sum(resultado_panel_bic$coefficients*Caso_CR)

Predicción tasa de intercambio para Costa Rica: 1.1813629.

3.2.12.3 MPDEA_aicc_et

3.2.12.3.1 Estimación
# Modelo completo
modelo_completo_panel_et <- lm(formula_con_cont_t, data = datos_int_con_cont_panel)

# Selección hacia atrás con AICc, fijando Regulacion_intercambio
MPDEA_aicc_et <- dredge(modelo_completo_panel_et, fixed = variables_fijas, rank = "AICc")

# Extraer el mejor modelo
MPDEA_aicc_et <- get.models(MPDEA_aicc_et, 1)[[1]]

# Ver variables seleccionadas
coef_original <- coef(MPDEA_aicc_et)
coef_sin_na <- coef_original[!is.na(coef_original)]
var_panel <- names(coef_sin_na)
var_panel <- var_panel[var_panel != "(Intercept)"] # excluye intercepto
var_panel <- var_panel[var_panel != "Regulacion_intercambio"] 

# Fórmula para lmer
formula_lmer <- as.formula(paste("Intercambio ~ Regulacion_intercambio +", paste(var_panel, collapse = " + "), " + (1 | Codigo_Pais)" ))

#Regresión con efectos aleatorios y errores agrupados
MPDEA_aicc_et <- lmer(formula_lmer, data = pdata)

# Resumen con errores agrupados por id
resultado_panel_aicc_et <- summary(MPDEA_aicc_et)

summary(MPDEA_aicc_et)
## Linear mixed model fit by REML ['lmerMod']
## Formula: 
## Intercambio ~ Regulacion_intercambio + Am_lat + Asia_Este + Cajero_Autom +  
##     Cuenta + Año_2013 + Año_2014 + Año_2015 + Año_2016 +  
##     Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 +  
##     Año_2022 + Año_2023 + Año_2024 + (1 | Codigo_Pais)
##    Data: pdata
## 
## REML criterion at convergence: 71
## 
## Scaled residuals: 
##      Min       1Q   Median       3Q      Max 
## -2.07402 -0.47346 -0.01781  0.33298  2.56731 
## 
## Random effects:
##  Groups      Name        Variance Std.Dev.
##  Codigo_Pais (Intercept) 0.06716  0.2591  
##  Residual                0.03626  0.1904  
## Number of obs: 165, groups:  Codigo_Pais, 54
## 
## Fixed effects:
##                         Estimate Std. Error t value
## (Intercept)             1.550174   0.233223   6.647
## Regulacion_intercambio -0.700047   0.069117 -10.128
## Am_lat                  0.556477   0.135612   4.103
## Asia_Este               0.547104   0.157995   3.463
## Cajero_Autom            0.002164   0.001003   2.159
## Cuenta                 -0.008952   0.002257  -3.966
## Año_2013                0.143628   0.153533   0.935
## Año_2014                0.262526   0.157802   1.664
## Año_2015                0.287842   0.155785   1.848
## Año_2016                0.326084   0.149417   2.182
## Año_2017                0.202788   0.136240   1.488
## Año_2018                0.279653   0.142973   1.956
## Año_2019                0.267972   0.141944   1.888
## Año_2020                0.261644   0.137811   1.899
## Año_2021                0.276624   0.142967   1.935
## Año_2022                0.271930   0.145288   1.872
## Año_2023                0.261008   0.142853   1.827
## Año_2024                0.256074   0.134966   1.897
3.2.12.3.2 Predicción
#Nombre de variables
var_finales <- attr(terms(MPDEA_aicc_et), "term.labels")

#Pronóstico
Caso_CR <- datos %>% filter(Codigo_Pais=="CRI") %>% dplyr::select(var_finales)
Caso_CR <- cbind(1,Caso_CR) # agregar un 1 para que se multiple con el intercepto general

pred_int_MPDEA_aicc_et <- sum(resultado_panel_aicc_et$coefficients*Caso_CR)

Predicción tasa de intercambio para Costa Rica: 1.1604129.

3.2.12.4 MPDEA_bic_et

3.2.12.4.1 Estimación
# Selección hacia atrás con AICc, fijando Regulacion_intercambio
MPDEA_bic_et <- dredge(modelo_completo_panel_et, fixed = variables_fijas, rank = "BIC")

# Extraer el mejor modelo
MPDEA_bic_et <- get.models(MPDEA_bic_et, 1)[[1]]

# Ver variables seleccionadas
coef_original <- coef(MPDEA_bic_et)
coef_sin_na <- coef_original[!is.na(coef_original)]
var_panel <- names(coef_sin_na)
var_panel <- var_panel[var_panel != "(Intercept)"] # excluye intercepto
var_panel <- var_panel[var_panel != "Regulacion_intercambio"] 

# Fórmula para lmer
formula_lmer <- as.formula(paste("Intercambio ~ Regulacion_intercambio +", paste(var_panel, collapse = " + "), " + (1 | Codigo_Pais)" ))

#Regresión con efectos aleatorios y errores agrupados
MPDEA_bic_et <- lmer(formula_lmer, data = pdata)

# Resumen con errores agrupados por id
resultado_panel_bic_et <- summary(MPDEA_bic_et)

summary(MPDEA_bic_et)
## Linear mixed model fit by REML ['lmerMod']
## Formula: 
## Intercambio ~ Regulacion_intercambio + Am_lat + Asia_Este + Cajero_Autom +  
##     Cuenta + Año_2013 + Año_2014 + Año_2015 + Año_2016 +  
##     Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 +  
##     Año_2022 + Año_2023 + Año_2024 + (1 | Codigo_Pais)
##    Data: pdata
## 
## REML criterion at convergence: 71
## 
## Scaled residuals: 
##      Min       1Q   Median       3Q      Max 
## -2.07402 -0.47346 -0.01781  0.33298  2.56731 
## 
## Random effects:
##  Groups      Name        Variance Std.Dev.
##  Codigo_Pais (Intercept) 0.06716  0.2591  
##  Residual                0.03626  0.1904  
## Number of obs: 165, groups:  Codigo_Pais, 54
## 
## Fixed effects:
##                         Estimate Std. Error t value
## (Intercept)             1.550174   0.233223   6.647
## Regulacion_intercambio -0.700047   0.069117 -10.128
## Am_lat                  0.556477   0.135612   4.103
## Asia_Este               0.547104   0.157995   3.463
## Cajero_Autom            0.002164   0.001003   2.159
## Cuenta                 -0.008952   0.002257  -3.966
## Año_2013                0.143628   0.153533   0.935
## Año_2014                0.262526   0.157802   1.664
## Año_2015                0.287842   0.155785   1.848
## Año_2016                0.326084   0.149417   2.182
## Año_2017                0.202788   0.136240   1.488
## Año_2018                0.279653   0.142973   1.956
## Año_2019                0.267972   0.141944   1.888
## Año_2020                0.261644   0.137811   1.899
## Año_2021                0.276624   0.142967   1.935
## Año_2022                0.271930   0.145288   1.872
## Año_2023                0.261008   0.142853   1.827
## Año_2024                0.256074   0.134966   1.897
3.2.12.4.2 Predicción
#Nombre de variables
var_finales <- attr(terms(MPDEA_bic_et), "term.labels")

#Pronóstico
Caso_CR <- datos %>% filter(Codigo_Pais=="CRI") %>% dplyr::select(var_finales)
Caso_CR <- cbind(1,Caso_CR) # agregar un 1 para que se multiple con el intercepto general

pred_int_MPDEA_bic_et <- sum(resultado_panel_bic_et$coefficients*Caso_CR)

Predicción tasa de intercambio para Costa Rica: 1.1604129.

3.3 Estimación de las comisiones de intercambio

Posterior a la etapa de modelación, se realiza un pronóstico para conocer la tasa de intercambio esperada para Costa Rica. A continuación, se calcula un promedio para los valores esperados de cada modelo estimado.

Pronosticos$Tipo_modelo <- Pronosticos$Modelo

Pronosticos <- Pronosticos %>%
  separate(Tipo_modelo, into = c("Tipo_modelo", "Especificacion"), sep = "-")


Pronosticos_resumen <- Pronosticos[-1, ] %>%
  group_by(Tipo_modelo) %>%
  summarise(promedio = mean(Pronostico, na.rm = TRUE))

promedio_intercambio_CR <- Pronosticos_resumen %>%
                            filter(Tipo_modelo == "Estimación principal ") %>%
                            pull(promedio)

print(Pronosticos_resumen)
## # A tibble: 14 × 2
##    Tipo_modelo                                                promedio
##    <chr>                                                         <dbl>
##  1 "Estimación ampliando definición de regulación "             1.15  
##  2 "Estimación con efectos aleatorios "                         1.16  
##  3 "Estimación con efectos no lineales "                        0.995 
##  4 "Estimación con transformación logarítmica "                -0.0359
##  5 "Estimación omitiendo EEE "                                  0.887 
##  6 "Estimación principal "                                      1.10  
##  7 "Estimación restringiendo muestra a países regulados "       1.37  
##  8 "Estimación truncada en 0 "                                  1.07  
##  9 "Estimación truncada en 0.26 "                               0.921 
## 10 "Estimación usando características más recientes "           1.06  
## 11 "Regresión con variables instrumentales "                    1.15  
## 12 "Regresión robusta "                                         1.07  
## 13 "Regresión sin variables relacionadas al uso de tarjetas "   1.19  
## 14 "Réplica análisis FMI "                                      1.10
Pronosticos_resumen_intercambio <- Pronosticos_resumen

En promedio, la tasa de intercambio estimada para Costa Rica es: 1.1047557.

4 Comisión de adquirencia

4.1 Estimación principal

Se estima una regresión lineal múltiple (MRL). A partir de los coeficientes estimados y las características observables para Costa Rica, se calcula la comisión de adquirencia esperada para el país. Se calculan 5 modelos:

  • MRL_sc: estima una regresión lineal sin variables de control; únicamente se incluye la variable dicotómica que indica si el país cuenta con regulación.
  • MRL_aicc: corresponde a los resultados obtenidos con el criterio de información de Akaike (AICc) con una corrección para tamaños de muestra pequeñas.
  • MRL_bic: incluye las estimaciones al controlar por las variables seleccionadas mediante el criterio de información bayesiano (BIC).
  • MRL_aicc_et: incluyen efectos fijos de tiempo en las regresiones, para el modelo MRL_aicc.
  • MRL_bic_et: incluyen efectos fijos de tiempo en las regresiones, para el modelo MRL_bic.

El total de países con información sobre adquirencia es 41.

4.1.1 Definiciones

# Variables de control
controles <- c("Cajero_Autom", "Crimen", "Cuenta", "Credito", "Debito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Pago_digital", "Valor_prom", "Asia_Este", "Europa", "Am_lat")

# Efectos fijos de tiempo
ef_tiempo <- c("Año_2013", "Año_2014", "Año_2015", "Año_2016", "Año_2017", "Año_2018", "Año_2019", "Año_2020", "Año_2021", "Año_2022", "Año_2023", "Año_2024", "Año_2025")

# Fórmula que incluye las variables de control
formula_con_cont <- as.formula(
  paste("Adquirencia ~ Regulacion_intercambio +", paste(controles, collapse = " + "))
)

# Fórmula que incluye las variables de control y los efectos fijos de tiempo
formula_con_cont_t <- as.formula(
  paste("Adquirencia ~ Regulacion_intercambio +", paste(controles, collapse = " + ")," + ", paste(ef_tiempo, collapse = " + "))
)

# Variables fijas para los modelos con efectos de tiempo
variables_fijas <- c("Regulacion_intercambio", paste0("Año_", 2010:2025))

# Definir el conjuntos de datos para los modelos con variables de control
variables_constantes <- c("Pais", "Codigo_Pais", "Año", "Adquirencia", "Regulacion_intercambio")
variables_interes <- c(variables_constantes, controles, ef_tiempo)

datos_adq_con_cont <- datos %>%
  select(all_of(variables_interes)) %>%
  na.omit()

Variables de control: [1] “Cajero_Autom” “Crimen” “Cuenta” “Credito” “Debito”
[6] “Densidad_Pob” “Densidad_Neg” “PIB_pc_PPA” “ICH” “Pago_digital”
[11] “Valor_prom” “Asia_Este” “Europa” “Am_lat” .

Efectos fijos de tiempo: [1] “Año_2013” “Año_2014” “Año_2015” “Año_2016” “Año_2017” “Año_2018”
[7] “Año_2019” “Año_2020” “Año_2021” “Año_2022” “Año_2023” “Año_2024”
[13] “Año_2025”.

4.1.2 MRL_sc

Regresión lineal sin variables de control.

4.1.2.1 Estimación

#Remover NA's de la columna "Intercambio" y dejar los demás.
datos_adq_sin_cont <- datos %>% 
  filter(!is.na(Adquirencia))

MRL_sc <- lm(Adquirencia ~ Regulacion_intercambio, datos_adq_sin_cont)

# Errores robustos
MRL_sc_corr_hc <- coeftest(MRL_sc, vcov. = vcovHC(MRL_sc, "HC1", adjust = TRUE, sandwich = TRUE))

MRL_sc_corr_hac <- coeftest(MRL_sc, vcov. = vcovHAC(MRL_sc, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(MRL_sc, MRL_sc_corr_hc, type = "html", 
          title = "Estimación principal - Modelo sin variables de control", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), 
          dep.var.caption = "Variable dependiente")
Estimación principal - Modelo sin variables de control
Variable dependiente
Tasa adquirencia Tasa adquirencia
MCO MCO HC
(1) (2)
Regulacion_intercambio -1.129*** -1.129***
(0.127) (0.127)
Constant 2.390*** 2.390***
(0.090) (0.094)
Observations 132
R2 0.379
Adjusted R2 0.375
Residual Std. Error 0.727 (df = 130)
F Statistic 79.487*** (df = 1; 130)
Note: p<0.1; p<0.05; p<0.01

4.1.2.2 Pruebas estadísticas

#Prueba de normalidad
residuos_MRL_sc <- resid(MRL_sc) #Se guardan los residuos
jarque.test(residuos_MRL_sc) #Se computa la prueba con la función Nula: distribución normal residuos
## 
##  Jarque-Bera Normality Test
## 
## data:  residuos_MRL_sc
## JB = 29.062, p-value = 4.889e-07
## alternative hypothesis: greater
car::qqPlot(MRL_sc)

## [1] 110 112
#Test de White sobre el modelo original. Hipótesis nula: homocedasticidad
white(MRL_sc, interactions = TRUE)
statistic p.value parameter method alternative
0.3002875 0.8605842 2 White’s Test greater

4.1.2.3 Predicción

#Pronóstico para CR
data_CR <- datos
data_CR[ which(datos$Codigo_Pais=="CRI"), which(names(datos)=="Regulacion_intercambio") ]<-1
pred_adq_MRL_sc <- predict(MRL_sc, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de adquirencia para Costa Rica: 1.2607463.

4.1.3 MRL_aicc

Regresión lineal con variables de control, sin efectos fijos de tiempo. Utiliza el criterio de información de Akaike (AICc) con una corrección para tamaños de muestra pequeñas.

4.1.3.1 Estimación

# Ajustar el modelo
modelo_completo <- lm(formula_con_cont, data = datos_adq_con_cont)

# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MRL_aicc <- dredge(modelo_completo, rank = "AICc", fixed = "Regulacion_intercambio")

# Extraer el mejor modelo según AICc
MRL_aicc <- get.models(MRL_aicc, 3)[[1]] #Ranking=3
MRL_aicc

Call: lm(formula = Adquirencia ~ Am_lat + Asia_Este + Cajero_Autom + Cuenta + Valor_prom + 1 + Regulacion_intercambio, data = datos_adq_con_cont)

Coefficients: (Intercept) Am_lat Asia_Este
3.897642 0.486078 0.714997
Cajero_Autom Cuenta Valor_prom
-0.002359 -0.019064 -0.004747
Regulacion_intercambio
-0.852893

# Errores robustos
MRL_aicc_corr_hc <- coeftest(MRL_aicc, vcov. = vcovHC(MRL_aicc, "HC1", adjust = TRUE, sandwich = TRUE))

MRL_aicc_corr_hac <- coeftest(MRL_aicc, vcov. = vcovHAC(MRL_aicc, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(MRL_aicc, MRL_aicc_corr_hc,
          type = "html", 
          title = "Estimación principal - Modelo AICc sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F,
          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), 
          dep.var.caption = "Variable dependiente")
Estimación principal - Modelo AICc sin efectos fijos de tiempo
Variable dependiente
Tasa adquirencia Tasa adquirencia
MCO MCO HC
(1) (2)
Am_lat 0.486*** 0.486***
(0.180) (0.163)
Asia_Este 0.715*** 0.715***
(0.178) (0.118)
Cajero_Autom -0.002** -0.002**
(0.001) (0.001)
Cuenta -0.019*** -0.019***
(0.004) (0.003)
Valor_prom -0.005** -0.005**
(0.002) (0.002)
Regulacion_intercambio -0.853*** -0.853***
(0.135) (0.143)
Constant 3.898*** 3.898***
(0.470) (0.422)
Observations 109
R2 0.703
Adjusted R2 0.685
Residual Std. Error 0.544 (df = 102)
F Statistic 40.229*** (df = 6; 102)
Note: p<0.1; p<0.05; p<0.01

4.1.3.2 Pruebas estadísticas

#Prueba de normalidad

residuos_MRL_aicc<-resid(MRL_aicc) #Se guardan los residuos
jarque.test(residuos_MRL_aicc) #Se computa la prueba con la función Nula: distribución normal residuos
## 
##  Jarque-Bera Normality Test
## 
## data:  residuos_MRL_aicc
## JB = 72.888, p-value < 2.2e-16
## alternative hypothesis: greater
car::qqPlot(MRL_aicc)

## [1] 97 99
#Se obtiene el resultado del índice de condición de multicolinealidad
#create vector of VIF values
print("El VIF del modelo es:")
## [1] "El VIF del modelo es:"
vif(MRL_aicc)
##                 Am_lat              Asia_Este           Cajero_Autom 
##               2.989786               1.465875               1.560428 
##                 Cuenta             Valor_prom Regulacion_intercambio 
##               2.941931               1.847086               1.652085
#Se ejecuta el test de White sobre el modelo original Nula: homocedasticidad
#white_lm(modelo_int_con_cont_aicc, interactions = TRUE)
white(MRL_aicc, interactions = TRUE)
statistic p.value parameter method alternative
57.7441 0.000517 27 White’s Test greater
plot(MRL_aicc$fit,MRL_aicc$res,xlab="Valores ajustados",ylab="Residuales")

#Prueba de especificación lineal RESET Nula: especificación correcta lineal
resettest(MRL_aicc, power = 2:3, type = c("fitted"), data = datos_adq_con_cont, vcov = vcovHC) #Corregido por heterocedasticidad)
## 
##  RESET test
## 
## data:  MRL_aicc
## RESET = 1.8202, df1 = 2, df2 = 102, p-value = 0.1673

4.1.3.3 Predicción

#Pronóstico para CR
pred_adq_MRL_aicc <- predict(MRL_aicc, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de adquirencia para Costa Rica: 1.8254502.

4.1.4 MRL_bic

Regresión lineal con variables de control, sin efectos fijos de tiempo. Utiliza el criterio de información bayesiana (BIC).

4.1.4.1 Estimación

# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MRL_bic <- dredge(modelo_completo, rank = "BIC", fixed = "Regulacion_intercambio")

# Extraer el mejor modelo según AICc
MRL_bic <- get.models(MRL_bic, 20)[[1]] #Ranking=20
MRL_bic

Call: lm(formula = Adquirencia ~ Am_lat + Asia_Este + Cajero_Autom + Cuenta + Valor_prom + 1 + Regulacion_intercambio, data = datos_adq_con_cont)

Coefficients: (Intercept) Am_lat Asia_Este
3.897642 0.486078 0.714997
Cajero_Autom Cuenta Valor_prom
-0.002359 -0.019064 -0.004747
Regulacion_intercambio
-0.852893

# Errores robustos
MRL_bic_corr_hc <- coeftest(MRL_bic, vcov. = vcovHC(MRL_bic, "HC1", adjust = TRUE, sandwich = TRUE))

MRL_bic_corr_hac <- coeftest(MRL_bic, vcov. = vcovHAC(MRL_bic, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(MRL_bic, MRL_bic_corr_hc, type = "html",
          title = "Estimación principal - Modelo BIC sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), 
          dep.var.caption = "Variable dependiente")
Estimación principal - Modelo BIC sin efectos fijos de tiempo
Variable dependiente
Tasa adquirencia Tasa adquirencia
MCO MCO HC
(1) (2)
Am_lat 0.486*** 0.486***
(0.180) (0.163)
Asia_Este 0.715*** 0.715***
(0.178) (0.118)
Cajero_Autom -0.002** -0.002**
(0.001) (0.001)
Cuenta -0.019*** -0.019***
(0.004) (0.003)
Valor_prom -0.005** -0.005**
(0.002) (0.002)
Regulacion_intercambio -0.853*** -0.853***
(0.135) (0.143)
Constant 3.898*** 3.898***
(0.470) (0.422)
Observations 109
R2 0.703
Adjusted R2 0.685
Residual Std. Error 0.544 (df = 102)
F Statistic 40.229*** (df = 6; 102)
Note: p<0.1; p<0.05; p<0.01

4.1.4.2 Pruebas estadísticas

#Prueba de normalidad
#Se guardan los residuos
residuos_MRL_bic<-resid(MRL_bic)
#Se computa la prueba con la función Nula: distribución normal residuos
jarque.test(residuos_MRL_bic)
## 
##  Jarque-Bera Normality Test
## 
## data:  residuos_MRL_bic
## JB = 72.888, p-value < 2.2e-16
## alternative hypothesis: greater
#Se obtiene el resultado del índice de condición de multicolinealidad
#create vector of VIF values
print("El VIF del modelo es:")
## [1] "El VIF del modelo es:"
vif(MRL_bic)
##                 Am_lat              Asia_Este           Cajero_Autom 
##               2.989786               1.465875               1.560428 
##                 Cuenta             Valor_prom Regulacion_intercambio 
##               2.941931               1.847086               1.652085
#Se ejecuta el test de White sobre el modelo original Nula: homocedasticidad
#white_lm(modelo_int_con_cont_bic, interactions = TRUE)
white(MRL_bic, interactions = TRUE)
statistic p.value parameter method alternative
57.7441 0.000517 27 White’s Test greater
#Prueba de especificación lineal RESET Nula: especificación correcta lineal
resettest(MRL_bic, power = 2:3, type = c("fitted"), data = datos_adq_con_cont, vcov = vcovHC)#Corregido por heterocedasticidad)
## 
##  RESET test
## 
## data:  MRL_bic
## RESET = 1.8202, df1 = 2, df2 = 102, p-value = 0.1673

4.1.4.3 Predicción

#Pronóstico para CR
pred_adq_MRL_bic<-predict(MRL_bic, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de adquirencia para Costa Rica: 1.8254502.

4.1.5 MRL_aicc_et

Regresión lineal con variables de control, con efectos fijos de tiempo. Utiliza el criterio de información de Akaike (AICc) con una corrección para tamaños de muestra pequeñas.

4.1.5.1 Estimación

# Ajustar el modelo
modelo_completo_et <- lm(formula_con_cont_t, data = datos_adq_con_cont)

# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MRL_aicc_et <- dredge(modelo_completo_et, rank = "AICc", fixed = variables_fijas)

# Extraer el mejor modelo según AICc
MRL_aicc_et <- get.models(MRL_aicc_et, 11)[[1]] #Ranking = 11
MRL_aicc_et

Call: lm(formula = Adquirencia ~ Am_lat + Asia_Este + Cuenta + ICH + Valor_prom + 1 + Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + Año_2024 + Año_2025 + Regulacion_intercambio, data = datos_adq_con_cont)

Coefficients: (Intercept) Am_lat Asia_Este
5.913399 0.335511 0.702604
Cuenta ICH Valor_prom
-0.017194 -2.577031 -0.005217
Año_2013 Año_2014 Año_2015
-0.634727 -0.879533 -0.520913
Año_2016 Año_2017 Año_2018
-0.395381 -0.597786 -0.611921
Año_2019 Año_2020 Año_2021
-0.953021 -0.910796 -0.987080
Año_2022 Año_2023 Año_2024
-0.680037 -0.894872 -1.029231
Año_2025 Regulacion_intercambio
NA -0.637250

# Errores robustos
MRL_aicc_et_corr_hc <- coeftest(MRL_aicc_et, vcov. = vcovHC(MRL_aicc_et, "HC1", adjust = TRUE, sandwich = TRUE))

MRL_aicc_et_corr_hac <- coeftest(MRL_aicc_et, vcov. = vcovHAC(MRL_aicc_et, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(MRL_aicc_et, MRL_aicc_et_corr_hc,
          type = "html", 
          title = "Estimación principal - Modelo AICc con efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F,
          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), 
          dep.var.caption = "Variable dependiente")
Estimación principal - Modelo AICc con efectos fijos de tiempo
Variable dependiente
Tasa adquirencia Tasa adquirencia
MCO MCO HC
(1) (2)
Am_lat 0.336 0.336
(0.203) (0.211)
Asia_Este 0.703*** 0.703***
(0.187) (0.150)
Cuenta -0.017*** -0.017***
(0.004) (0.004)
ICH -2.577** -2.577**
(1.120) (1.123)
Valor_prom -0.005*** -0.005***
(0.002) (0.002)
Año_2013 -0.635 -0.635
(0.506) (0.399)
Año_2014 -0.880* -0.880**
(0.472) (0.394)
Año_2015 -0.521 -0.521
(0.445) (0.445)
Año_2016 -0.395 -0.395
(0.422) (0.467)
Año_2017 -0.598 -0.598
(0.414) (0.402)
Año_2018 -0.612 -0.612
(0.426) (0.451)
Año_2019 -0.953** -0.953**
(0.427) (0.399)
Año_2020 -0.911** -0.911**
(0.418) (0.399)
Año_2021 -0.987** -0.987**
(0.437) (0.399)
Año_2022 -0.680 -0.680
(0.435) (0.538)
Año_2023 -0.895* -0.895**
(0.451) (0.397)
Año_2024 -1.029** -1.029**
(0.444) (0.403)
Año_2025
Regulacion_intercambio -0.637*** -0.637***
(0.148) (0.139)
Constant 5.913*** 5.913***
(0.892) (0.989)
Observations 109
R2 0.744
Adjusted R2 0.693
Residual Std. Error 0.537 (df = 90)
F Statistic 14.567*** (df = 18; 90)
Note: p<0.1; p<0.05; p<0.01

4.1.5.2 Pruebas estadísticas

#Prueba de normalidad
#Se guardan los residuos
residuos_MRL_aicc_et <- resid(MRL_aicc_et)
#Se computa la prueba con la función Nula: distribución normal residuos
jarque.test(residuos_MRL_aicc_et)
## 
##  Jarque-Bera Normality Test
## 
## data:  residuos_MRL_aicc_et
## JB = 108.82, p-value < 2.2e-16
## alternative hypothesis: greater
car::qqPlot(residuos_MRL_aicc_et)

## [1] 99 97
#Se ejecuta el test de White sobre el modelo original Nula: homocedasticidad
#white_lm(modelo_int_con_cont_ef_aicc, interactions = TRUE)
white(MRL_aicc_et, interactions = TRUE)
statistic p.value parameter method alternative
99.82858 1 209 White’s Test greater

4.1.5.3 Predicción

#Pronóstico para CR
pred_adq_MRL_aicc_et<-predict(MRL_aicc_et, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de adquirencia para Costa Rica: 1.5197865.

4.1.6 MRL_bic_et

Regresión lineal con variables de control, con efectos fijos de tiempo. Utiliza el criterio de información bayesiana (BIC).

4.1.6.1 Estimación

# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MRL_bic_et <- dredge(modelo_completo_et, rank = "BIC", fixed = variables_fijas)

# Extraer el mejor modelo según AICc
MRL_bic_et <- get.models(MRL_bic_et, 10)[[1]] #Ranking=10
MRL_bic_et

Call: lm(formula = Adquirencia ~ Asia_Este + Cuenta + ICH + Valor_prom + 1 + Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + Año_2024 + Año_2025 + Regulacion_intercambio, data = datos_adq_con_cont)

Coefficients: (Intercept) Asia_Este Cuenta
6.861054 0.675328 -0.020600
ICH Valor_prom Año_2013
-3.077412 -0.006749 -0.830085
Año_2014 Año_2015 Año_2016
-0.920881 -0.553495 -0.409449
Año_2017 Año_2018 Año_2019
-0.660394 -0.634573 -0.981871
Año_2020 Año_2021 Año_2022
-0.993583 -0.971697 -0.691148
Año_2023 Año_2024 Año_2025
-0.976533 -1.030735 NA
Regulacion_intercambio
-0.716237

# Errores robustos
MRL_bic_et_corr_hc <- coeftest(MRL_bic_et, vcov. = vcovHC(MRL_bic_et, "HC1", adjust = TRUE, sandwich = TRUE))

MRL_bic_et_corr_hac <- coeftest(MRL_bic_et, vcov. = vcovHAC(MRL_bic_et, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(MRL_bic_et, MRL_bic_et_corr_hc, type = "html",
          title = "Estimación principal - Modelo BIC con efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), 
          dep.var.caption = "Variable dependiente")
Estimación principal - Modelo BIC con efectos fijos de tiempo
Variable dependiente
Tasa adquirencia Tasa adquirencia
MCO MCO HC
(1) (2)
Asia_Este 0.675*** 0.675***
(0.188) (0.146)
Cuenta -0.021*** -0.021***
(0.004) (0.003)
ICH -3.077*** -3.077***
(1.089) (0.994)
Valor_prom -0.007*** -0.007***
(0.002) (0.002)
Año_2013 -0.830* -0.830**
(0.497) (0.347)
Año_2014 -0.921* -0.921**
(0.475) (0.359)
Año_2015 -0.553 -0.553
(0.448) (0.415)
Año_2016 -0.409 -0.409
(0.426) (0.432)
Año_2017 -0.660 -0.660*
(0.416) (0.372)
Año_2018 -0.635 -0.635
(0.430) (0.414)
Año_2019 -0.982** -0.982***
(0.431) (0.364)
Año_2020 -0.994** -0.994***
(0.419) (0.376)
Año_2021 -0.972** -0.972***
(0.441) (0.364)
Año_2022 -0.691 -0.691
(0.439) (0.502)
Año_2023 -0.977** -0.977***
(0.453) (0.360)
Año_2024 -1.031** -1.031***
(0.448) (0.366)
Año_2025
Regulacion_intercambio -0.716*** -0.716***
(0.141) (0.129)
Constant 6.861*** 6.861***
(0.688) (0.708)
Observations 109
R2 0.737
Adjusted R2 0.688
Residual Std. Error 0.542 (df = 91)
F Statistic 14.981*** (df = 17; 91)
Note: p<0.1; p<0.05; p<0.01

4.1.6.2 Pruebas estadísticas

#Prueba de normalidad
#Se guardan los residuos
residuos_MRL_bic_et <- resid(MRL_bic_et)
#Se computa la prueba con la función Nula: distribución normal residuos
jarque.test(residuos_MRL_bic_et)
## 
##  Jarque-Bera Normality Test
## 
## data:  residuos_MRL_bic_et
## JB = 70.673, p-value = 4.441e-16
## alternative hypothesis: greater
white(MRL_bic_et, interactions = TRUE)
statistic p.value parameter method alternative
75.92882 1 189 White’s Test greater

4.1.6.3 Predicción

#Pronóstico para CR
pred_adq_MRL_bic_et <- predict(MRL_bic_et, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de adquirencia para Costa Rica: 1.4304885.

4.2 Pruebas de robustez

A continuación, se evalúa cómo cambian los resultados anteriores al estimar las comisiones con modelos alternativos.

4.2.1 Modelos de regresión truncados

Mientras que el modelo de regresión lineal no impone ninguna restricción a las comisiones, es de esperar que las comisiones sean necesariamente mayores a cero como mínimo, o mayores a los costos asociados en particular. Para tratar estos casos, se pueden utilizar modelos de variable dependiente truncada.

Se estiman estos modelos bajo dos supuestos sobre el punto de truncamiento. Un primer punto de partida es que el punto de truncamiento es en cero. El segundo supuesto es que el punto de truncamiento sucede en el mínimo de la comisión de intercambio observada en la muestra.

Además, se estima cada modelo con las variables seleccionadas por los criterios de información de AICc y BIC.

4.2.1.1 MRT_aicc_0

4.2.1.1.1 Estimación
# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MRT_aicc_0 <- dredge(modelo_completo, rank = "AICc", fixed = "Regulación_intercambio")

# Extraer el mejor modelo según AICc
MRT_aicc_0 <- names(coef(get.models(MRT_aicc_0, 3)[[1]])) #Ranking=3
MRT_aicc_0 <- MRT_aicc_0[MRT_aicc_0 != "(Intercept)"]  # Excluir intercepto

# Ajustar modelo truncado con límite inferior 0
formula_trunc <- as.formula(paste("Adquirencia ~", paste(MRT_aicc_0, collapse = " + ")))
MRT_aicc_0 <- truncreg(formula_trunc, data = datos_adq_con_cont, point = 0, direction = "left")

summary(MRT_aicc_0)
## 
## Call:
## truncreg(formula = formula_trunc, data = datos_adq_con_cont, 
##     point = 0, direction = "left")
## 
## BFGS maximization method
## 69 iterations, 0h:0m:0s 
## g'(-H)^-1g = 3.77E-10 
##  
## 
## 
## Coefficients :
##                          Estimate Std. Error t-value  Pr(>|t|)    
## (Intercept)             4.0775785  0.5022670  8.1183 4.441e-16 ***
## Am_lat                  0.5232919  0.1879035  2.7849  0.005354 ** 
## Asia_Este               0.8652100  0.2034652  4.2524 2.115e-05 ***
## Cajero_Autom           -0.0026140  0.0010773 -2.4263  0.015253 *  
## Cuenta                 -0.0211758  0.0042358 -4.9992 5.756e-07 ***
## Regulacion_intercambio -0.9137870  0.1429041 -6.3944 1.612e-10 ***
## Valor_prom             -0.0054863  0.0021101 -2.6000  0.009322 ** 
## sigma                   0.5570811  0.0423587 13.1515 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Log-Likelihood: -80.602 on 8 Df
4.2.1.1.2 Predicción
#Pronóstico para CR
pred_adq_MRT_aicc_0 <- predict(MRT_aicc_0, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de adquirencia para Costa Rica: 1.7844013.

4.2.1.2 MRT_bic_0 **

4.2.1.2.1 Estimación
# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MRT_bic_0 <- dredge(modelo_completo, rank = "BIC", fixed = "Regulación_intercambio")

# Extraer el mejor modelo según AICc
MRT_bic_0 <- names(coef(get.models(MRT_bic_0, 20)[[1]])) #Ranking=20
MRT_bic_0 <- MRT_bic_0[MRT_bic_0 != "(Intercept)"]  # Excluir intercepto

# Ajustar modelo truncado con límite inferior 0
formula_trunc <- as.formula(paste("Adquirencia ~", paste(MRT_bic_0, collapse = " + ")))
MRT_bic_0 <- truncreg(formula_trunc, data = datos_adq_con_cont, point = 0, direction = "left")

summary(MRT_bic_0)
## 
## Call:
## truncreg(formula = formula_trunc, data = datos_adq_con_cont, 
##     point = 0, direction = "left")
## 
## BFGS maximization method
## 69 iterations, 0h:0m:0s 
## g'(-H)^-1g = 3.77E-10 
##  
## 
## 
## Coefficients :
##                          Estimate Std. Error t-value  Pr(>|t|)    
## (Intercept)             4.0775785  0.5022670  8.1183 4.441e-16 ***
## Am_lat                  0.5232919  0.1879035  2.7849  0.005354 ** 
## Asia_Este               0.8652100  0.2034652  4.2524 2.115e-05 ***
## Cajero_Autom           -0.0026140  0.0010773 -2.4263  0.015253 *  
## Cuenta                 -0.0211758  0.0042358 -4.9992 5.756e-07 ***
## Regulacion_intercambio -0.9137870  0.1429041 -6.3944 1.612e-10 ***
## Valor_prom             -0.0054863  0.0021101 -2.6000  0.009322 ** 
## sigma                   0.5570811  0.0423587 13.1515 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Log-Likelihood: -80.602 on 8 Df
4.2.1.2.2 Predicción
#Pronóstico para CR
pred_adq_MRT_bic_0<-predict(MRT_bic_0, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de adquirencia para Costa Rica: 1.7844013.

4.2.1.3 MRT_aicc_et_0

4.2.1.3.1 Estimación
# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MRT_aicc_et_0 <- dredge(modelo_completo_et, rank = "AICc", fixed = variables_fijas)

# Extraer el mejor modelo según AICc
MRT_aicc_et_0 <- get.models(MRT_aicc_et_0, 11)[[1]] #Rankig=11

# Obtener coeficientes
coeficientes <- coef(MRT_aicc_et_0)

# Filtrar nombres de coeficientes que no sean NA
coeficientes_validos <- names(coeficientes[!is.na(coeficientes)])

# Excluir el intercepto
variables_truncadas <- coeficientes_validos[coeficientes_validos != "(Intercept)"]

# Construir fórmula para modelo truncado
formula_trunc <- as.formula(paste("Adquirencia ~", paste(variables_truncadas, collapse = " + ")))

# Ajustar modelo truncado con límite inferior 0
MRT_aicc_et_0 <- truncreg(formula_trunc, data = datos_adq_con_cont, point = 0, direction = "left")

summary(MRT_aicc_et_0)
## 
## Call:
## truncreg(formula = formula_trunc, data = datos_adq_con_cont, 
##     point = 0, direction = "left")
## 
## BFGS maximization method
## 91 iterations, 0h:0m:0s 
## g'(-H)^-1g = 2.9E-07 
##  
## 
## 
## Coefficients :
##                          Estimate Std. Error t-value  Pr(>|t|)    
## (Intercept)             6.1174155  0.8678812  7.0487 1.806e-12 ***
## Am_lat                  0.3662360  0.1976190  1.8532  0.063848 .  
## Asia_Este               0.8252587  0.1963581  4.2028 2.636e-05 ***
## Cuenta                 -0.0185390  0.0043250 -4.2865 1.815e-05 ***
## ICH                    -2.7963601  1.0932059 -2.5579  0.010529 *  
## Valor_prom             -0.0055928  0.0019260 -2.9038  0.003686 ** 
## Año_2013               -0.5978242  0.4833704 -1.2368  0.216168    
## Año_2014               -0.9006580  0.4582802 -1.9653  0.049380 *  
## Año_2015               -0.5182964  0.4258964 -1.2170  0.223622    
## Año_2016               -0.3801351  0.4031261 -0.9430  0.345697    
## Año_2017               -0.5675723  0.3986540 -1.4237  0.154527    
## Año_2018               -0.5908147  0.4076643 -1.4493  0.147263    
## Año_2019               -0.9621882  0.4099033 -2.3474  0.018907 *  
## Año_2020               -0.9044427  0.4005838 -2.2578  0.023957 *  
## Año_2021               -0.9881225  0.4211434 -2.3463  0.018962 *  
## Año_2022               -0.6698074  0.4172141 -1.6054  0.108400    
## Año_2023               -0.9002728  0.4355296 -2.0671  0.038727 *  
## Año_2024               -1.0428128  0.4291978 -2.4297  0.015112 *  
## Regulacion_intercambio -0.6648559  0.1432698 -4.6406 3.474e-06 ***
## sigma                   0.5121217  0.0383251 13.3626 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Log-Likelihood: -72.991 on 20 Df
4.2.1.3.2 Predicción
#Pronóstico para CR
pred_adq_MRT_aicc_et_0<-predict(MRT_aicc_et_0, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de adquirencia para Costa Rica: 1.4639593.

4.2.1.4 MRT_bic_et_0

4.2.1.4.1 Estimación
# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MRT_bic_et_0 <- dredge(modelo_completo_et, rank = "BIC", fixed = variables_fijas)

# Extraer el mejor modelo según AICc
MRT_bic_et_0 <- get.models(MRT_bic_et_0, 10)[[1]] #Ranking=10

# Obtener coeficientes
coeficientes <- coef(MRT_bic_et_0)

# Filtrar nombres de coeficientes que no sean NA
coeficientes_validos <- names(coeficientes[!is.na(coeficientes)])

# Excluir el intercepto
variables_truncadas <- coeficientes_validos[coeficientes_validos != "(Intercept)"]

# Construir fórmula para modelo truncado
formula_trunc <- as.formula(paste("Adquirencia ~", paste(variables_truncadas, collapse = " + ")))

# Ajustar modelo truncado con límite inferior 0
MRT_bic_et_0 <- truncreg(formula_trunc, data = datos_adq_con_cont, point = 0, direction = "left")

summary(MRT_bic_et_0)
## 
## Call:
## truncreg(formula = formula_trunc, data = datos_adq_con_cont, 
##     point = 0, direction = "left")
## 
## BFGS maximization method
## 88 iterations, 0h:0m:0s 
## g'(-H)^-1g = 7.28E-08 
##  
## 
## 
## Coefficients :
##                          Estimate Std. Error t-value  Pr(>|t|)    
## (Intercept)             7.1493839  0.6835328 10.4595 < 2.2e-16 ***
## Asia_Este               0.7903910  0.1970947  4.0102 6.067e-05 ***
## Cuenta                 -0.0222055  0.0039299 -5.6504 1.600e-08 ***
## ICH                    -3.3411424  1.0716338 -3.1178  0.001822 ** 
## Valor_prom             -0.0072810  0.0017329 -4.2016 2.650e-05 ***
## Año_2013               -0.8119675  0.4758993 -1.7062  0.087976 .  
## Año_2014               -0.9425283  0.4637796 -2.0323  0.042126 *  
## Año_2015               -0.5530362  0.4314034 -1.2819  0.199861    
## Año_2016               -0.3953270  0.4087636 -0.9671  0.333480    
## Año_2017               -0.6444827  0.4019256 -1.6035  0.108827    
## Año_2018               -0.6151624  0.4131306 -1.4890  0.136480    
## Año_2019               -0.9919310  0.4153081 -2.3884  0.016921 *  
## Año_2020               -0.9974792  0.4032918 -2.4733  0.013386 *  
## Año_2021               -0.9665616  0.4266143 -2.2657  0.023472 *  
## Año_2022               -0.6809039  0.4228823 -1.6101  0.107365    
## Año_2023               -0.9934630  0.4390403 -2.2628  0.023648 *  
## Año_2024               -1.0385063  0.4347469 -2.3888  0.016905 *  
## Regulacion_intercambio -0.7479751  0.1385002 -5.4005 6.644e-08 ***
## sigma                   0.5194610  0.0388364 13.3756 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Log-Likelihood: -74.694 on 19 Df
4.2.1.4.2 Predicción
#Pronóstico para CR
pred_adq_MRT_bic_et_0<-predict(MRT_bic_et_0, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de adquirencia para Costa Rica: 1.3769604.

4.2.1.5 MRT_aicc_033

4.2.1.5.1 Estimación
# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MRT_aicc_033 <- dredge(modelo_completo, rank = "AICc", fixed = "Regulación_intercambio")

# Extraer el mejor modelo según AICc
MRT_aicc_033 <- names(coef(get.models(MRT_aicc_033, 3)[[1]])) #Ranking=3
MRT_aicc_033 <- MRT_aicc_033[MRT_aicc_033 != "(Intercept)"]  # Excluir intercepto

# Ajustar modelo truncado con límite inferior 0.33
formula_trunc <- as.formula(paste("Adquirencia ~", paste(MRT_aicc_033, collapse = " + ")))
MRT_aicc_033 <- truncreg(formula_trunc, data = datos_adq_con_cont, point = 0.33, direction = "left")

summary(MRT_aicc_033)
## 
## Call:
## truncreg(formula = formula_trunc, data = datos_adq_con_cont, 
##     point = 0.33, direction = "left")
## 
## BFGS maximization method
## 65 iterations, 0h:0m:0s 
## g'(-H)^-1g = 1.11E-09 
##  
## 
## 
## Coefficients :
##                          Estimate Std. Error t-value  Pr(>|t|)    
## (Intercept)             4.4308849  0.5756322  7.6974 1.399e-14 ***
## Am_lat                  0.6307744  0.2112489  2.9859  0.002827 ** 
## Asia_Este               1.1984784  0.2618160  4.5776 4.704e-06 ***
## Cajero_Autom           -0.0029873  0.0011949 -2.5001  0.012418 *  
## Cuenta                 -0.0261154  0.0049585 -5.2668 1.388e-07 ***
## Regulacion_intercambio -1.0547451  0.1631410 -6.4652 1.011e-10 ***
## Valor_prom             -0.0068986  0.0024845 -2.7766  0.005493 ** 
## sigma                   0.5912743  0.0485200 12.1862 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Log-Likelihood: -70.022 on 8 Df
4.2.1.5.2 Predicción
#Pronóstico para CR
pred_adq_MRT_aicc_033 <- predict(MRT_aicc_033, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de adquirencia para Costa Rica: 1.6698237.

4.2.1.6 MRT_bic_033

4.2.1.6.1 Estimación
# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MRT_bic_033 <- dredge(modelo_completo, rank = "BIC", fixed = "Regulacion_intercambio")

# Extraer el mejor modelo según AICc
MRT_bic_033 <- names(coef(get.models(MRT_bic_033, 20)[[1]])) #Ranking=20
MRT_bic_033 <- MRT_bic_033[MRT_bic_033 !="(Intercept)"]  # Excluir intercepto

# Ajustar modelo truncado con límite inferior 0.33
formula_trunc <- as.formula(paste("Adquirencia ~", paste(MRT_bic_033, collapse = " + ")))
MRT_bic_033 <- truncreg(formula_trunc, data = datos_adq_con_cont, point = 0.33, direction = "left")

summary(MRT_bic_033)
## 
## Call:
## truncreg(formula = formula_trunc, data = datos_adq_con_cont, 
##     point = 0.33, direction = "left")
## 
## BFGS maximization method
## 65 iterations, 0h:0m:0s 
## g'(-H)^-1g = 1.11E-09 
##  
## 
## 
## Coefficients :
##                          Estimate Std. Error t-value  Pr(>|t|)    
## (Intercept)             4.4308849  0.5756322  7.6974 1.399e-14 ***
## Am_lat                  0.6307744  0.2112489  2.9859  0.002827 ** 
## Asia_Este               1.1984784  0.2618160  4.5776 4.704e-06 ***
## Cajero_Autom           -0.0029873  0.0011949 -2.5001  0.012418 *  
## Cuenta                 -0.0261154  0.0049585 -5.2668 1.388e-07 ***
## Valor_prom             -0.0068986  0.0024845 -2.7766  0.005493 ** 
## Regulacion_intercambio -1.0547451  0.1631410 -6.4652 1.011e-10 ***
## sigma                   0.5912743  0.0485200 12.1862 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Log-Likelihood: -70.022 on 8 Df
4.2.1.6.2 Predicción
#Pronóstico para CR
pred_adq_MRT_bic_033 <- predict(MRT_bic_033, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de adquirencia para Costa Rica: 1.6698237.

4.2.1.7 MRT_aicc_et_033

4.2.1.7.1 Estimación
# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MRT_aicc_et_033 <- dredge(modelo_completo_et, rank = "AICc", fixed = variables_fijas)

# Extraer el mejor modelo según AICc
MRT_aicc_et_033 <- get.models(MRT_aicc_et_033, 11)[[1]] #Ranking=11

# Obtener coeficientes
coeficientes <- coef(MRT_aicc_et_033)

# Filtrar nombres de coeficientes que no sean NA
coeficientes_validos <- names(coeficientes[!is.na(coeficientes)])

# Excluir el intercepto
variables_truncadas <- coeficientes_validos[coeficientes_validos != "(Intercept)"]

# Construir fórmula para modelo truncado
formula_trunc <- as.formula(paste("Adquirencia ~", paste(variables_truncadas, collapse = " + ")))

# Ajustar modelo truncado con límite inferior 0.33
MRT_aicc_et_033 <- truncreg(formula_trunc, data = datos_adq_con_cont, point = 0.33, direction = "left")

summary(MRT_aicc_et_033)
## 
## Call:
## truncreg(formula = formula_trunc, data = datos_adq_con_cont, 
##     point = 0.33, direction = "left")
## 
## BFGS maximization method
## 90 iterations, 0h:0m:0s 
## g'(-H)^-1g = 1.92E-09 
##  
## 
## 
## Coefficients :
##                          Estimate Std. Error t-value  Pr(>|t|)    
## (Intercept)             6.5753665  0.9509157  6.9148 4.686e-12 ***
## Am_lat                  0.4594783  0.2185917  2.1020  0.035554 *  
## Asia_Este               1.1255810  0.2502117  4.4985 6.843e-06 ***
## Cuenta                 -0.0218890  0.0048993 -4.4677 7.905e-06 ***
## ICH                    -3.3145404  1.2065775 -2.7471  0.006013 ** 
## Valor_prom             -0.0063119  0.0021505 -2.9351  0.003335 ** 
## Año_2013               -0.4950587  0.5150673 -0.9612  0.336475    
## Año_2014               -0.9433736  0.4938778 -1.9101  0.056116 .  
## Año_2015               -0.5343938  0.4551340 -1.1741  0.240336    
## Año_2016               -0.3531437  0.4288327 -0.8235  0.410224    
## Año_2017               -0.5277850  0.4285219 -1.2316  0.218083    
## Año_2018               -0.5532648  0.4350299 -1.2718  0.203449    
## Año_2019               -0.9736202  0.4369859 -2.2280  0.025878 *  
## Año_2020               -0.8825829  0.4264721 -2.0695  0.038499 *  
## Año_2021               -0.9688066  0.4510800 -2.1477  0.031734 *  
## Año_2022               -0.6483540  0.4450405 -1.4568  0.145160    
## Año_2023               -0.8952592  0.4677293 -1.9141  0.055613 .  
## Año_2024               -1.0414138  0.4604108 -2.2619  0.023702 *  
## Regulacion_intercambio -0.7348099  0.1580066 -4.6505 3.311e-06 ***
## sigma                   0.5416649  0.0437275 12.3873 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Log-Likelihood: -62.925 on 20 Df
4.2.1.7.2 Predicción
#Pronóstico para CR
pred_adq_MRT_aicc_et_033 <- predict(MRT_aicc_et_033, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de adquirencia para Costa Rica: 1.3520761.

4.2.1.8 MRT_bic_et_033

4.2.1.8.1 Estimación
# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MRT_bic_et_033 <- dredge(modelo_completo_et, rank = "BIC", fixed = variables_fijas)

# Extraer el mejor modelo según AICc
MRT_bic_et_033 <- get.models(MRT_bic_et_033, 10)[[1]] #Ranking=10

# Obtener coeficientes
coeficientes <- coef(MRT_bic_et_033)

# Filtrar nombres de coeficientes que no sean NA
coeficientes_validos <- names(coeficientes[!is.na(coeficientes)])

# Excluir el intercepto
variables_truncadas <- coeficientes_validos[coeficientes_validos != "(Intercept)"]

# Construir fórmula para modelo truncado
formula_trunc <- as.formula(paste("Adquirencia ~", paste(variables_truncadas, collapse = " + ")))

# Ajustar modelo truncado con límite inferior 0.33
MRT_bic_et_033 <- truncreg(formula_trunc, data = datos_adq_con_cont, point = 0.33, direction = "left")

summary(MRT_bic_et_033)
## 
## Call:
## truncreg(formula = formula_trunc, data = datos_adq_con_cont, 
##     point = 0.33, direction = "left")
## 
## BFGS maximization method
## 89 iterations, 0h:0m:0s 
## g'(-H)^-1g = 2.43E-09 
##  
## 
## 
## Coefficients :
##                          Estimate Std. Error t-value  Pr(>|t|)    
## (Intercept)             7.8148310  0.7741673 10.0945 < 2.2e-16 ***
## Asia_Este               1.0554942  0.2450574  4.3071 1.654e-05 ***
## Cuenta                 -0.0262464  0.0045693 -5.7441 9.243e-09 ***
## ICH                    -3.9293304  1.1898962 -3.3022 0.0009591 ***
## Valor_prom             -0.0084065  0.0019571 -4.2954 1.744e-05 ***
## Año_2013               -0.7679036  0.5033755 -1.5255 0.1271323    
## Año_2014               -0.9860873  0.4986524 -1.9775 0.0479846 *  
## Año_2015               -0.5705358  0.4597984 -1.2408 0.2146652    
## Año_2016               -0.3716838  0.4336769 -0.8571 0.3914159    
## Año_2017               -0.6323045  0.4301793 -1.4699 0.1415989    
## Año_2018               -0.5805623  0.4393716 -1.3213 0.1863857    
## Año_2019               -1.0090143  0.4416243 -2.2848 0.0223257 *  
## Año_2020               -1.0054170  0.4280553 -2.3488 0.0188339 *  
## Año_2021               -0.9409696  0.4559256 -2.0639 0.0390304 *  
## Año_2022               -0.6596715  0.4497429 -1.4668 0.1424374    
## Año_2023               -1.0163337  0.4703003 -2.1610 0.0306929 *  
## Año_2024               -1.0316007  0.4650719 -2.2182 0.0265444 *  
## Regulacion_intercambio -0.8348468  0.1545197 -5.4028 6.559e-08 ***
## sigma                   0.5480070  0.0440493 12.4408 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Log-Likelihood: -65.161 on 19 Df
4.2.1.8.2 Predicción
#Pronóstico para CR
pred_adq_MRT_bic_et_033 <- predict(MRT_bic_et_033, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de adquirencia para Costa Rica: 1.2578044.

4.2.2 Modelos de regresión con transformación logarítmica de la variable dependiente

Al no existir ningún tipo de restricción en la estimación de los coeficientes, cabe la posibilidad de que un modelo de regresión lineal genere predicciones negativas. Sin embargo, ninguna de las predicciones obtenidas para el intercambio o adquirencia son negativas.

A pesar de no significar un potencial problema, una manera de garantizar que las predicciones sean positivas es recurrir a una transformación logarítmica de la variable dependiente.

4.2.2.1 MTL_aicc

4.2.2.1.1 Estimación
# Ajustar el modelo
modelo_completo_log <- lm(formula_con_cont, data = datos_adq_con_cont_log)

# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MTL_aicc <- dredge(modelo_completo_log, rank = "AICc", fixed = "Regulacion_intercambio")

# Extraer el mejor modelo según AICc
MTL_aicc <- get.models(MTL_aicc, 1)[[1]]
MTL_aicc
## 
## Call:
## lm(formula = Adquirencia ~ Asia_Este + Credito + Europa + Pago_digital + 
##     PIB_pc_PPA + Valor_prom + 1 + Regulacion_intercambio, data = datos_adq_con_cont_log)
## 
## Coefficients:
##            (Intercept)               Asia_Este                 Credito  
##              1.745e+00               2.102e-01              -8.434e-03  
##                 Europa            Pago_digital              PIB_pc_PPA  
##             -5.672e-01              -1.005e-02               6.427e-06  
##             Valor_prom  Regulacion_intercambio  
##             -4.249e-03              -4.188e-01
# Errores robustos
MTL_aicc_corr_hc <- coeftest(MTL_aicc, vcov. = vcovHC(MTL_aicc, "HC1", adjust = TRUE, sandwich = TRUE))

MTL_aicc_corr_hac <- coeftest(MTL_aicc, vcov. = vcovHAC(MTL_aicc, adjust = TRUE, sandwich = TRUE))

summary(MTL_aicc)
## 
## Call:
## lm(formula = Adquirencia ~ Asia_Este + Credito + Europa + Pago_digital + 
##     PIB_pc_PPA + Valor_prom + 1 + Regulacion_intercambio, data = datos_adq_con_cont_log)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.57499 -0.20277  0.00818  0.13624  1.18332 
## 
## Coefficients:
##                          Estimate Std. Error t value Pr(>|t|)    
## (Intercept)             1.745e+00  1.591e-01  10.963  < 2e-16 ***
## Asia_Este               2.102e-01  1.348e-01   1.560 0.121966    
## Credito                -8.434e-03  3.868e-03  -2.181 0.031539 *  
## Europa                 -5.672e-01  1.182e-01  -4.797 5.56e-06 ***
## Pago_digital           -1.005e-02  3.307e-03  -3.039 0.003023 ** 
## PIB_pc_PPA              6.427e-06  3.041e-06   2.113 0.037050 *  
## Valor_prom             -4.249e-03  1.080e-03  -3.935 0.000153 ***
## Regulacion_intercambio -4.188e-01  7.662e-02  -5.465 3.34e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.308 on 101 degrees of freedom
## Multiple R-squared:  0.7912, Adjusted R-squared:  0.7767 
## F-statistic: 54.66 on 7 and 101 DF,  p-value: < 2.2e-16
4.2.2.1.2 Predicción
#Pronóstico para CR
pred_adq_MTL_aicc <- predict(MTL_aicc, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de adquirencia para Costa Rica: 0.7398775.

4.2.2.2 MTL_bic

4.2.2.2.1 Estimación
# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MTL_bic <- dredge(modelo_completo_log, rank = "BIC", fixed = "Regulacion_intercambio")

# Extraer el mejor modelo según AICc
MTL_bic <- get.models(MTL_bic, 3)[[1]] #Ranking=3
MTL_bic
## 
## Call:
## lm(formula = Adquirencia ~ Credito + Europa + Pago_digital + 
##     PIB_pc_PPA + Valor_prom + 1 + Regulacion_intercambio, data = datos_adq_con_cont_log)
## 
## Coefficients:
##            (Intercept)                 Credito                  Europa  
##              1.591e+00              -9.423e-03              -6.953e-01  
##           Pago_digital              PIB_pc_PPA              Valor_prom  
##             -7.569e-03               7.271e-06              -3.387e-03  
## Regulacion_intercambio  
##             -3.951e-01
# Errores robustos
MTL_bic_corr_hc <- coeftest(MTL_bic, vcov. = vcovHC(MTL_bic, "HC1", adjust = TRUE, sandwich = TRUE))

MTL_bic_corr_hac <- coeftest(MTL_bic, vcov. = vcovHAC(MTL_bic, adjust = TRUE, sandwich = TRUE))

summary(MTL_bic)
## 
## Call:
## lm(formula = Adquirencia ~ Credito + Europa + Pago_digital + 
##     PIB_pc_PPA + Valor_prom + 1 + Regulacion_intercambio, data = datos_adq_con_cont_log)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.59707 -0.16421  0.00778  0.15111  1.18452 
## 
## Coefficients:
##                          Estimate Std. Error t value Pr(>|t|)    
## (Intercept)             1.591e+00  1.258e-01  12.645  < 2e-16 ***
## Credito                -9.423e-03  3.842e-03  -2.453 0.015883 *  
## Europa                 -6.953e-01  8.560e-02  -8.123 1.11e-12 ***
## Pago_digital           -7.569e-03  2.920e-03  -2.592 0.010929 *  
## PIB_pc_PPA              7.271e-06  3.014e-06   2.412 0.017635 *  
## Valor_prom             -3.387e-03  9.341e-04  -3.626 0.000451 ***
## Regulacion_intercambio -3.951e-01  7.563e-02  -5.224 9.29e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.3101 on 102 degrees of freedom
## Multiple R-squared:  0.7861, Adjusted R-squared:  0.7735 
## F-statistic: 62.49 on 6 and 102 DF,  p-value: < 2.2e-16
4.2.2.2.2 Predicción
#Pronóstico para CR
pred_adq_MTL_bic <- predict(MTL_bic, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de adquirencia para Costa Rica: 0.763737.

4.2.2.3 MTL_aicc_et **

4.2.2.3.1 Estimación
# Ajustar el modelo
#modelo_completo_log_et <- lm(formula_con_cont_t, data = datos_adq_con_cont_log)
modelo_completo_log_et <- lm(Adquirencia ~ Regulacion_intercambio + Pago_digital +                                     Valor_prom + Asia_Este + Europa + Año_2014 + Año_2015 +  
                             Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + 
                             Año_2021 + Año_2022 + Año_2023 + Año_2024 + Año_2025, 
                             data = datos_adq_con_cont_log)

# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MTL_aicc_et <- dredge(modelo_completo_log_et, rank = "AICc", fixed = variables_fijas)

# Extraer el mejor modelo según AICc
MTL_aicc_et <- get.models(MTL_aicc_et, 1)[[1]]
MTL_aicc_et
## 
## Call:
## lm(formula = Adquirencia ~ Asia_Este + Europa + Pago_digital + 
##     Valor_prom + 1 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + 
##     Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022 + 
##     Año_2023 + Año_2024 + Año_2025 + Regulacion_intercambio, 
##     data = datos_adq_con_cont_log)
## 
## Coefficients:
##            (Intercept)               Asia_Este                  Europa  
##                2.02606                 0.27868                -0.56382  
##           Pago_digital              Valor_prom                Año_2014  
##               -0.01299                -0.00432                -0.26530  
##               Año_2015                Año_2016                Año_2017  
##               -0.17485                -0.14214                -0.04530  
##               Año_2018                Año_2019                Año_2020  
##               -0.22018                -0.36762                -0.24702  
##               Año_2021                Año_2022                Año_2023  
##               -0.29329                -0.23783                -0.26525  
##               Año_2024                Año_2025  Regulacion_intercambio  
##               -0.37148                 0.08055                -0.36881
# Errores robustos
MTL_aicc_et_corr_hc <- coeftest(MTL_aicc_et, vcov. = vcovHC(MTL_aicc_et, "HC1", adjust = TRUE, sandwich = TRUE))

MTL_aicc_et_corr_hac <- coeftest(MTL_aicc_et, vcov. = vcovHAC(MTL_aicc_et, adjust = TRUE, sandwich = TRUE))

summary(MTL_aicc_et)
## 
## Call:
## lm(formula = Adquirencia ~ Asia_Este + Europa + Pago_digital + 
##     Valor_prom + 1 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + 
##     Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022 + 
##     Año_2023 + Año_2024 + Año_2025 + Regulacion_intercambio, 
##     data = datos_adq_con_cont_log)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.61574 -0.20817 -0.03023  0.14667  1.01318 
## 
## Coefficients:
##                         Estimate Std. Error t value Pr(>|t|)    
## (Intercept)             2.026056   0.218177   9.286 7.95e-15 ***
## Asia_Este               0.278685   0.146214   1.906 0.059807 .  
## Europa                 -0.563819   0.127541  -4.421 2.71e-05 ***
## Pago_digital           -0.012991   0.002258  -5.752 1.17e-07 ***
## Valor_prom             -0.004320   0.001167  -3.701 0.000367 ***
## Año_2014               -0.265302   0.254998  -1.040 0.300907    
## Año_2015               -0.174847   0.239111  -0.731 0.466514    
## Año_2016               -0.142143   0.225424  -0.631 0.529909    
## Año_2017               -0.045298   0.214932  -0.211 0.833550    
## Año_2018               -0.220182   0.232023  -0.949 0.345152    
## Año_2019               -0.367615   0.225842  -1.628 0.107035    
## Año_2020               -0.247023   0.224462  -1.101 0.274013    
## Año_2021               -0.293294   0.244452  -1.200 0.233329    
## Año_2022               -0.237832   0.239197  -0.994 0.322716    
## Año_2023               -0.265251   0.246742  -1.075 0.285210    
## Año_2024               -0.371475   0.244966  -1.516 0.132875    
## Año_2025                0.080555   0.302049   0.267 0.790308    
## Regulacion_intercambio -0.368805   0.081547  -4.523 1.84e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.3137 on 91 degrees of freedom
## Multiple R-squared:  0.8047, Adjusted R-squared:  0.7682 
## F-statistic: 22.06 on 17 and 91 DF,  p-value: < 2.2e-16
4.2.2.3.2 Predicción
#Pronóstico para CR
pred_adq_MTL_aicc_et <- predict(MTL_aicc_et, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de adquirencia para Costa Rica: 0.524669.

4.2.2.4 MTL_bic_et **

4.2.2.4.1 Estimación
# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MTL_bic_et <- dredge(modelo_completo_log_et, rank = "BIC", fixed = variables_fijas)

# Extraer el mejor modelo según AICc
MTL_bic_et <- get.models(MTL_bic_et, 1)[[1]]
MTL_bic_et
## 
## Call:
## lm(formula = Adquirencia ~ Europa + Pago_digital + Valor_prom + 
##     1 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + 
##     Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + 
##     Año_2024 + Año_2025 + Regulacion_intercambio, data = datos_adq_con_cont_log)
## 
## Coefficients:
##            (Intercept)                  Europa            Pago_digital  
##               1.920688               -0.731164               -0.009828  
##             Valor_prom                Año_2014                Año_2015  
##              -0.003082               -0.359169               -0.272586  
##               Año_2016                Año_2017                Año_2018  
##              -0.234740               -0.174850               -0.333758  
##               Año_2019                Año_2020                Año_2021  
##              -0.454451               -0.371135               -0.440121  
##               Año_2022                Año_2023                Año_2024  
##              -0.367556               -0.395114               -0.501497  
##               Año_2025  Regulacion_intercambio  
##              -0.053779               -0.314076
# Errores robustos
MTL_bic_et_corr_hc <- coeftest(MTL_bic_et, vcov. = vcovHC(MTL_bic_et, "HC1", adjust = TRUE, sandwich = TRUE))

MTL_bic_et_corr_hac <- coeftest(MTL_bic_et, vcov. = vcovHAC(MTL_bic_et, adjust = TRUE, sandwich = TRUE))

summary(MTL_bic_et)
## 
## Call:
## lm(formula = Adquirencia ~ Europa + Pago_digital + Valor_prom + 
##     1 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + 
##     Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + 
##     Año_2024 + Año_2025 + Regulacion_intercambio, data = datos_adq_con_cont_log)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.68287 -0.20766  0.00901  0.15212  1.00886 
## 
## Coefficients:
##                          Estimate Std. Error t value Pr(>|t|)    
## (Intercept)             1.9206884  0.2140555   8.973 3.31e-14 ***
## Europa                 -0.7311639  0.0938243  -7.793 9.69e-12 ***
## Pago_digital           -0.0098280  0.0015534  -6.327 8.94e-09 ***
## Valor_prom             -0.0030817  0.0009835  -3.133 0.002318 ** 
## Año_2014               -0.3591691  0.2537516  -1.415 0.160317    
## Año_2015               -0.2725855  0.2368661  -1.151 0.252797    
## Año_2016               -0.2347396  0.2232543  -1.051 0.295808    
## Año_2017               -0.1748498  0.2067989  -0.846 0.400022    
## Año_2018               -0.3337580  0.2274270  -1.468 0.145640    
## Año_2019               -0.4544506  0.2243421  -2.026 0.045692 *  
## Año_2020               -0.3711345  0.2178616  -1.704 0.091844 .  
## Año_2021               -0.4401214  0.2352925  -1.871 0.064590 .  
## Año_2022               -0.3675556  0.2325679  -1.580 0.117442    
## Año_2023               -0.3951140  0.2405182  -1.643 0.103846    
## Año_2024               -0.5014969  0.2386186  -2.102 0.038316 *  
## Año_2025               -0.0537793  0.2978839  -0.181 0.857127    
## Regulacion_intercambio -0.3140761  0.0774087  -4.057 0.000104 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.3182 on 92 degrees of freedom
## Multiple R-squared:  0.7969, Adjusted R-squared:  0.7616 
## F-statistic: 22.56 on 16 and 92 DF,  p-value: < 2.2e-16
4.2.2.4.2 Predicción
#Pronóstico para CR
pred_adq_MTL_bic_et <- predict(MTL_bic_et, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de adquirencia para Costa Rica: `r pred_adq_MTL_bic_et.

4.2.3 Modelo de regresión con efectos no lineales

Para permitir la presencia de efectos no lineales en la regresión, se estima una especificación donde se incluyen como potenciales candidatos en la selección del modelo los términos cuadráticos de las variables de control.

4.2.3.1 MENL_aicc

4.2.3.1.1 Estimación

Se proporciona el código completo para su ejecución en R. No obstante, debido al tiempo excesivo que toma el procesamiento automático, se han incorporado manualmente las variables que optimizan el modelo. Estas variables fueron identificadas previamente mediante un proceso de selección realizado en Stata, con el fin de reducir significativamente el tiempo de ejecución en R.

# Ajustar el modelo (automático R)
#modelo_completo_enl <- lm(formula_con_cont_enl, data = datos_adq_con_cont_enl)

# Ajustar el modelo (manual, selección previa de variables en Stata)
modelo_completo_enl <- lm(Adquirencia ~ Regulacion_intercambio + 
                                     Crimen + Cuenta + Credito + PIB_pc_PPA + 
                                     ICH + Pago_digital + Am_lat + Credito_sqrt +
                                     Debito_sqrt + Densidad_Neg_sqrt + PIB_pc_PPA_sqrt + 
                                     ICH_sqrt, data = datos_adq_con_cont_enl) 

# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MENL_aicc <- dredge(modelo_completo_enl, rank = "AICc", fixed = "Regulacion_intercambio")

# Extraer el mejor modelo según AICc
MENL_aicc <- get.models(MENL_aicc, 5)[[1]] #Ranking=5
MENL_aicc
## 
## Call:
## lm(formula = Adquirencia ~ Am_lat + Credito + Credito_sqrt + 
##     Crimen + Cuenta + Debito_sqrt + Densidad_Neg_sqrt + ICH + 
##     ICH_sqrt + Pago_digital + PIB_pc_PPA + PIB_pc_PPA_sqrt + 
##     1 + Regulacion_intercambio, data = datos_adq_con_cont_enl)
## 
## Coefficients:
##            (Intercept)                  Am_lat                 Credito  
##              1.531e+01               1.590e+00              -8.294e-02  
##           Credito_sqrt                  Crimen                  Cuenta  
##              1.016e-03              -1.297e-04               3.258e-02  
##            Debito_sqrt       Densidad_Neg_sqrt                     ICH  
##              1.123e-04               1.877e-03              -4.341e+01  
##               ICH_sqrt            Pago_digital              PIB_pc_PPA  
##              3.169e+01              -3.975e-02               5.721e-05  
##        PIB_pc_PPA_sqrt  Regulacion_intercambio  
##             -3.699e-10              -5.504e-01
# Errores robustos
MENL_aicc_corr_hc <- coeftest(MENL_aicc, vcov. = vcovHC(MENL_aicc, "HC1", adjust = TRUE, sandwich = TRUE))

MENL_aicc_corr_hac <- coeftest(MENL_aicc, vcov. = vcovHAC(MENL_aicc, adjust = TRUE, sandwich = TRUE))

summary(MENL_aicc)
## 
## Call:
## lm(formula = Adquirencia ~ Am_lat + Credito + Credito_sqrt + 
##     Crimen + Cuenta + Debito_sqrt + Densidad_Neg_sqrt + ICH + 
##     ICH_sqrt + Pago_digital + PIB_pc_PPA + PIB_pc_PPA_sqrt + 
##     1 + Regulacion_intercambio, data = datos_adq_con_cont_enl)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.03239 -0.19096  0.00316  0.23595  1.89962 
## 
## Coefficients:
##                          Estimate Std. Error t value Pr(>|t|)    
## (Intercept)             1.531e+01  2.447e+00   6.258 1.12e-08 ***
## Am_lat                  1.590e+00  2.401e-01   6.621 2.12e-09 ***
## Credito                -8.294e-02  2.153e-02  -3.852 0.000213 ***
## Credito_sqrt            1.016e-03  2.721e-04   3.733 0.000322 ***
## Crimen                 -1.297e-04  7.603e-05  -1.706 0.091257 .  
## Cuenta                  3.258e-02  1.130e-02   2.883 0.004876 ** 
## Debito_sqrt             1.123e-04  6.389e-05   1.757 0.082079 .  
## Densidad_Neg_sqrt       1.877e-03  6.736e-04   2.787 0.006430 ** 
## ICH                    -4.341e+01  8.511e+00  -5.100 1.73e-06 ***
## ICH_sqrt                3.169e+01  6.613e+00   4.791 6.10e-06 ***
## Pago_digital           -3.975e-02  1.072e-02  -3.709 0.000351 ***
## PIB_pc_PPA              5.721e-05  2.656e-05   2.154 0.033790 *  
## PIB_pc_PPA_sqrt        -3.699e-10  1.633e-10  -2.266 0.025743 *  
## Regulacion_intercambio -5.504e-01  1.680e-01  -3.275 0.001473 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.4876 on 95 degrees of freedom
## Multiple R-squared:  0.7777, Adjusted R-squared:  0.7473 
## F-statistic: 25.57 on 13 and 95 DF,  p-value: < 2.2e-16
4.2.3.1.2 Predicción
#Pronóstico para CR
pred_adq_MENL_aicc <- predict(MENL_aicc, newdata = data_CR_enl, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de adquirencia para Costa Rica: 2.6852188.

4.2.3.2 MENL_bic

4.2.3.2.1 Estimación

Se proporciona el código completo para su ejecución en R. No obstante, debido al tiempo excesivo que toma el procesamiento automático, se han incorporado manualmente las variables que optimizan el modelo. Estas variables fueron identificadas previamente mediante un proceso de selección realizado en Stata, con el fin de reducir significativamente el tiempo de ejecución en R.

# Ajustar el modelo (automático R)
#modelo_completo_enl <- lm(formula_con_cont_enl, data = datos_adq_con_cont_enl)

# Ajustar el modelo (manual, selección previa de variables en Stata)
modelo_completo_enl <- lm(Adquirencia ~ Regulacion_intercambio + Cuenta + Credito +
                                     ICH + Pago_digital + Am_lat + Credito_sqrt + 
                                     Densidad_Neg_sqrt + ICH_sqrt, 
                                     data = datos_adq_con_cont_enl) 

# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MENL_bic <- dredge(modelo_completo_enl, rank = "BIC", fixed = "Regulacion_intercambio")

# Extraer el mejor modelo según AICc
MENL_bic <- get.models(MENL_bic, 3)[[1]] #Ranking=3
MENL_bic
## 
## Call:
## lm(formula = Adquirencia ~ Am_lat + Credito + Credito_sqrt + 
##     Cuenta + Densidad_Neg_sqrt + ICH + ICH_sqrt + Pago_digital + 
##     1 + Regulacion_intercambio, data = datos_adq_con_cont_enl)
## 
## Coefficients:
##            (Intercept)                  Am_lat                 Credito  
##              1.460e+01               1.285e+00              -4.606e-02  
##           Credito_sqrt                  Cuenta       Densidad_Neg_sqrt  
##              5.531e-04               3.222e-02               2.002e-03  
##                    ICH                ICH_sqrt            Pago_digital  
##             -4.153e+01               3.225e+01              -3.218e-02  
## Regulacion_intercambio  
##             -3.378e-01
# Errores robustos
MENL_bic_corr_hc <- coeftest(MENL_bic, vcov. = vcovHC(MENL_bic, "HC1", adjust = TRUE, sandwich = TRUE))

MENL_bic_corr_hac <- coeftest(MENL_bic, vcov. = vcovHAC(MENL_bic, adjust = TRUE, sandwich = TRUE))

summary(MENL_bic)
## 
## Call:
## lm(formula = Adquirencia ~ Am_lat + Credito + Credito_sqrt + 
##     Cuenta + Densidad_Neg_sqrt + ICH + ICH_sqrt + Pago_digital + 
##     1 + Regulacion_intercambio, data = datos_adq_con_cont_enl)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.05235 -0.21432 -0.01408  0.19715  1.98569 
## 
## Coefficients:
##                          Estimate Std. Error t value Pr(>|t|)    
## (Intercept)             1.460e+01  2.362e+00   6.182 1.42e-08 ***
## Am_lat                  1.285e+00  2.106e-01   6.100 2.07e-08 ***
## Credito                -4.606e-02  1.588e-02  -2.901  0.00459 ** 
## Credito_sqrt            5.531e-04  1.962e-04   2.819  0.00581 ** 
## Cuenta                  3.222e-02  1.145e-02   2.814  0.00590 ** 
## Densidad_Neg_sqrt       2.002e-03  6.194e-04   3.233  0.00167 ** 
## ICH                    -4.153e+01  8.179e+00  -5.078 1.79e-06 ***
## ICH_sqrt                3.225e+01  6.495e+00   4.965 2.87e-06 ***
## Pago_digital           -3.218e-02  1.007e-02  -3.197  0.00186 ** 
## Regulacion_intercambio -3.378e-01  1.421e-01  -2.377  0.01937 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.4958 on 99 degrees of freedom
## Multiple R-squared:  0.7606, Adjusted R-squared:  0.7388 
## F-statistic: 34.95 on 9 and 99 DF,  p-value: < 2.2e-16
4.2.3.2.2 Predicción
#Pronóstico para CR
pred_adq_MENL_bic <- predict(MENL_bic, newdata = data_CR_enl, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de adquirencia para Costa Rica: 2.5142197.

4.2.3.3 MENL_aicc_et

4.2.3.3.1 Estimación

Se proporciona el código completo para su ejecución en R. No obstante, debido al tiempo excesivo que toma el procesamiento automático, se han incorporado manualmente las variables que optimizan el modelo. Estas variables fueron identificadas previamente mediante un proceso de selección realizado en Stata, con el fin de reducir significativamente el tiempo de ejecución en R.

# Ajustar el modelo (automático R)
#modelo_completo_et_enl <- lm(formula_con_cont_t_enl, data = datos_adq_con_cont_enl)

# Ajustar el modelo (manual, selección previa de variables en Stata)
modelo_completo_et_enl <- lm(Adquirencia ~ Regulacion_intercambio + 
                                        Credito + ICH + Valor_prom + Am_lat + Credito_sqrt                                         + Densidad_Neg_sqrt + ICH_sqrt + Valor_prom_sqrt +                                         + Año_2014 + Año_2015 + Año_2016 + Año_2017 +  
                                        Año_2018 + Año_2019 + Año_2020 + Año_2021 + 
                                        Año_2022 + Año_2023 + Año_2024 + Año_2025, 
                                        data = datos_adq_con_cont_enl) 

# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MENL_aicc_et <- dredge(modelo_completo_et_enl, rank = "AICc", fixed = variables_fijas)

# Extraer el mejor modelo según AICc
MENL_aicc_et <- get.models(MENL_aicc_et, 2)[[1]] #Ranking=2
MENL_aicc_et
## 
## Call:
## lm(formula = Adquirencia ~ Am_lat + Credito + Credito_sqrt + 
##     Densidad_Neg_sqrt + ICH + ICH_sqrt + Valor_prom + Valor_prom_sqrt + 
##     1 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + 
##     Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + 
##     Año_2024 + Año_2025 + Regulacion_intercambio, data = datos_adq_con_cont_enl)
## 
## Coefficients:
##            (Intercept)                  Am_lat                 Credito  
##              1.360e+01               1.202e+00              -5.132e-02  
##           Credito_sqrt       Densidad_Neg_sqrt                     ICH  
##              5.749e-04               1.970e-03              -3.166e+01  
##               ICH_sqrt              Valor_prom         Valor_prom_sqrt  
##              2.362e+01              -1.321e-02               6.555e-05  
##               Año_2014                Año_2015                Año_2016  
##             -4.750e-01              -2.418e-01              -1.772e-01  
##               Año_2017                Año_2018                Año_2019  
##             -5.605e-01              -2.907e-01              -6.141e-01  
##               Año_2020                Año_2021                Año_2022  
##             -7.857e-01              -8.054e-01              -5.534e-01  
##               Año_2023                Año_2024                Año_2025  
##             -7.471e-01              -8.451e-01              -1.066e-01  
## Regulacion_intercambio  
##             -3.820e-01
# Errores robustos
MENL_aicc_et_corr_hc <- coeftest(MENL_aicc_et, vcov. = vcovHC(MENL_aicc_et, "HC1", adjust = TRUE, sandwich = TRUE))

MENL_aicc_et_corr_hac <- coeftest(MENL_aicc_et, vcov. = vcovHAC(MENL_aicc_et, adjust = TRUE, sandwich = TRUE))

summary(MENL_aicc_et)
## 
## Call:
## lm(formula = Adquirencia ~ Am_lat + Credito + Credito_sqrt + 
##     Densidad_Neg_sqrt + ICH + ICH_sqrt + Valor_prom + Valor_prom_sqrt + 
##     1 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + 
##     Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + 
##     Año_2024 + Año_2025 + Regulacion_intercambio, data = datos_adq_con_cont_enl)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.95352 -0.21261 -0.03927  0.19002  1.60527 
## 
## Coefficients:
##                          Estimate Std. Error t value Pr(>|t|)    
## (Intercept)             1.360e+01  2.365e+00   5.749 1.31e-07 ***
## Am_lat                  1.202e+00  2.081e-01   5.776 1.16e-07 ***
## Credito                -5.132e-02  1.277e-02  -4.021 0.000123 ***
## Credito_sqrt            5.749e-04  1.793e-04   3.206 0.001883 ** 
## Densidad_Neg_sqrt       1.970e-03  6.154e-04   3.201 0.001910 ** 
## ICH                    -3.166e+01  7.647e+00  -4.140 8.00e-05 ***
## ICH_sqrt                2.362e+01  6.042e+00   3.910 0.000182 ***
## Valor_prom             -1.321e-02  6.511e-03  -2.028 0.045593 *  
## Valor_prom_sqrt         6.555e-05  3.008e-05   2.179 0.032034 *  
## Año_2014               -4.750e-01  4.052e-01  -1.172 0.244362    
## Año_2015               -2.418e-01  3.834e-01  -0.631 0.529917    
## Año_2016               -1.772e-01  3.596e-01  -0.493 0.623434    
## Año_2017               -5.605e-01  3.316e-01  -1.691 0.094511 .  
## Año_2018               -2.907e-01  3.564e-01  -0.816 0.416884    
## Año_2019               -6.141e-01  3.601e-01  -1.705 0.091733 .  
## Año_2020               -7.857e-01  3.463e-01  -2.269 0.025755 *  
## Año_2021               -8.054e-01  3.715e-01  -2.168 0.032871 *  
## Año_2022               -5.534e-01  3.657e-01  -1.513 0.133895    
## Año_2023               -7.471e-01  3.805e-01  -1.964 0.052765 .  
## Año_2024               -8.451e-01  3.754e-01  -2.251 0.026885 *  
## Año_2025               -1.066e-01  4.695e-01  -0.227 0.820857    
## Regulacion_intercambio -3.820e-01  1.370e-01  -2.788 0.006509 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.4883 on 87 degrees of freedom
## Multiple R-squared:  0.7959, Adjusted R-squared:  0.7466 
## F-statistic: 16.16 on 21 and 87 DF,  p-value: < 2.2e-16
4.2.3.3.2 Predicción
#Pronóstico para CR
pred_adq_MENL_aicc_et <- predict(MENL_aicc_et, newdata = data_CR_enl, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de adquirencia para Costa Rica: 1.9709359.

4.2.3.4 MENL_bic_et

4.2.3.4.1 Estimación

Se proporciona el código completo para su ejecución en R. No obstante, debido al tiempo excesivo que toma el procesamiento automático, se han incorporado manualmente las variables que optimizan el modelo. Estas variables fueron identificadas previamente mediante un proceso de selección realizado en Stata, con el fin de reducir significativamente el tiempo de ejecución en R.

4.2.3.4.2 Predicción
#Pronóstico para CR
pred_adq_MENL_bic_et <- predict(MENL_bic_et, newdata = data_CR_enl, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de adquirencia para Costa Rica: 1.9709359.

4.2.4 Método Bootstrap

Una manera alternativa de obtener los intervalos de confianza de las predicciones de las comisiones es mediante el método bootstrap. Este método de remuestreo permite obtener una estimación no paramétrica de la distribución empírica de las comisiones de intercambio y adquirencia.

Para desarrollar este ejercicio, se realizan 1.000 remuestreos, y para cada muestra obtenida se sigue el mismo tipo de análisis presentado en la estimación principal. Esto da como resultado una comisión de adquirencia o intercambio promedio, según sea el caso, para cada iteración.

A continuación, se presenta el código completo en R. No obstante, debido al tiempo estimado de ejecución (aproximadamente 16 horas), los chunks se encuentran deshabilitados.

start_time <- Sys.time()
# Función segura para convertir factores con un solo nivel
convert_factors <- function(df) {
  df %>%
    mutate(across(where(is.factor), ~ if (nlevels(.) < 2) as.character(.) else .))
}

# Configurar plan de ejecución paralela (puedes ajustar el número de workers)


bootstrap_iter <- function(i) {
  cat("Iteración:", i, "\n")
  
  resultado <- list(
    Adquirencia_AICC = NA_real_,
    Adquirencia_BIC = NA_real_,
    Adquirencia_AICC_EF = NA_real_,
    Adquirencia_BIC_EF = NA_real_
  )
  
  datos <- readxl::read_excel("D:/Documentos Usuarios/villaltaca/OneDrive - Banco Central de Costa Rica/DIE/Revisiones de documentos/Fijación 2025/Datos y Estimación - Adquirencia e intercambio/Base_datos_adquirencia_intercambio.xlsx")
  
  datos <- datos %>%
    mutate(across(all_of(c("Regulacion_intercambio", "Regulacion_adquirencia",
                           "Europa", "Asia_Este", "Am_lat", "OCDE", "EEE",  
                           "Dato_mas_reciente",
                           paste0("Año_", 2010:2025))), as.factor))
  
  datos_int_con_cont <- datos %>%
    dplyr::select(-Intercambio) %>%
    na.omit()
  
  data_CR <- datos[which(datos$Codigo_Pais == "CRI"), which(names(datos) != "Intercambio")]
  
  controles <- c("Cajero_Autom", "Crimen", "Cuenta", "Credito", "Debito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Pago_digital", "Valor_prom", "Europa", "Asia_Este", "Am_lat")
  ef_tiempo <- paste0("Año_", 2013:2025)
  variables_fijas <- c("Regulacion_intercambio", paste0("Año_", 2010:2025))
  
  muestra <- tryCatch({
    temp <- datos_int_con_cont[sample(nrow(datos_int_con_cont), replace = TRUE), ]
    temp <- convert_factors(temp)
    temp <- droplevels(temp)
    
    # Detectar factores con un solo nivel
    factores_un_nivel <- names(Filter(function(x) is.factor(x) && nlevels(x) < 2, temp))
    
    # Ajustar variables de control y efectos fijos
    controles_validos <- setdiff(controles, factores_un_nivel)
    ef_tiempo_validos <- setdiff(ef_tiempo, factores_un_nivel)
    variables_fijas_validas <- setdiff(variables_fijas, factores_un_nivel)
    
    # Crear fórmulas dinámicas
    formula_con_cont <- as.formula(
      paste("Adquirencia ~ Regulacion_intercambio +", paste(controles_validos, collapse = " + "))
    )
    
    formula_con_cont_t <- as.formula(
      paste("Adquirencia ~ Regulacion_intercambio +", paste(c(controles_validos, ef_tiempo_validos), collapse = " + "))
    )
    
    list(
      muestra = temp,
      formula_con_cont = formula_con_cont,
      formula_con_cont_t = formula_con_cont_t,
      variables_fijas_validas = variables_fijas_validas
    )
    
  }, error = function(e) {
    cat("Error al generar muestra en iteración", i, ":", conditionMessage(e), "\n")
    return(NULL)
  })
  
  if (is.null(muestra)) return(resultado)
  
  temp <- muestra$muestra
  formula_con_cont <- muestra$formula_con_cont
  formula_con_cont_t <- muestra$formula_con_cont_t
  variables_fijas_validas <- muestra$variables_fijas_validas
  
  # AICC sin EF
  tryCatch({
    modelo <- lm(formula_con_cont, data = temp)
    options(na.action = "na.fail")
    modelos <- dredge(modelo, fixed = "Regulacion_intercambio", rank = "AICc")
    modelo <- get.models(modelos, 1)[[1]]
    datos_pred <- rbind(temp, data_CR)
    datos_pred$fitted <- predict(modelo, newdata = datos_pred)
    resultado$Adquirencia_AICC <- mean(datos_pred$fitted[datos_pred$Codigo_Pais == "CRI"], na.rm = TRUE)
  }, error = function(e) {
    cat("Error en AICC sin EF, iteración", i, ":", conditionMessage(e), "\n")
  })
  
  # BIC sin EF
  tryCatch({
    modelo <- lm(formula_con_cont, data = temp)
    options(na.action = "na.fail")
    modelos <- dredge(modelo, fixed = "Regulacion_intercambio", rank = "BIC")
    modelo <- get.models(modelos, 1)[[1]]
    datos_pred <- rbind(temp, data_CR)
    datos_pred$fitted <- predict(modelo, newdata = datos_pred)
    resultado$Adquirencia_BIC <- mean(datos_pred$fitted[datos_pred$Codigo_Pais == "CRI"], na.rm = TRUE)
  }, error = function(e) {
    cat("Error en BIC sin EF, iteración", i, ":", conditionMessage(e), "\n")
  })
  
  # AICC con EF
  tryCatch({
    modelo <- lm(formula_con_cont_t, data = temp)
    options(na.action = "na.fail")
    modelos <- dredge(modelo, fixed = variables_fijas_validas, rank = "AICc")
    modelo <- get.models(modelos, 1)[[1]]
    datos_pred <- rbind(temp, data_CR)
    datos_pred$fitted <- predict(modelo, newdata = datos_pred)
    resultado$Adquirencia_AICC_EF <- mean(datos_pred$fitted[datos_pred$Codigo_Pais == "CRI"], na.rm = TRUE)
  }, error = function(e) {
    cat("Error en AICC con EF, iteración", i, ":", conditionMessage(e), "\n")
  })
  
  # BIC con EF
  tryCatch({
    modelo <- lm(formula_con_cont_t, data = temp)
    options(na.action = "na.fail")
    modelos <- dredge(modelo, fixed = variables_fijas_validas, rank = "BIC")
    modelo <- get.models(modelos, 1)[[1]]
    datos_pred <- rbind(temp, data_CR)
    datos_pred$fitted <- predict(modelo, newdata = datos_pred)
    resultado$Adquirencia_BIC_EF <- mean(datos_pred$fitted[datos_pred$Codigo_Pais == "CRI"], na.rm = TRUE)
  }, error = function(e) {
    cat("Error en BIC con EF, iteración", i, ":", conditionMessage(e), "\n")
  })
  
  return(resultado)
}

plan(multisession, workers = parallel::detectCores() - 1)

# Número de iteraciones
n_iter <- 1000

# Ejecutar en paralelo con semilla reproducible
resultados_lista <- future_map(
  1:n_iter,
  bootstrap_iter,
  .progress = TRUE,
  .options = furrr_options(seed = 472195)
)

# Convertir a data.table
resultados <- rbindlist(resultados_lista, fill = TRUE)
## Post Bootstrap
# Calcular el promedio
resultados$Adquirencia <- rowMeans(resultados[, c("Adquirencia_AICC",
                                                  "Adquirencia_BIC",
                                                  "Adquirencia_AICC_EF",
                                                  "Adquirencia_BIC_EF")])


# Calcular estadísticas descriptivas
media <- mean(resultados$Adquirencia, na.rm = TRUE)
mediana <- median(resultados$Adquirencia, na.rm = TRUE)


# Formatear con dos decimales
media_fmt <- sprintf("%.2f", media)
mediana_fmt <- sprintf("%.2f", mediana)

# Mostrar resultados
cat("Media:", media_fmt, "\n")
cat("Mediana:", mediana_fmt, "\n")


#Obtener intervalo de confianza del 95% para Intercambio
c1 <- round(quantile(resultados$Adquirencia, 0.025), 2)
c2 <- round(quantile(resultados$Adquirencia, 0.975), 2)
ci <- quantile(resultados$Adquirencia, probs = c(0.025, 0.975))

# Mostrar los valores
cat("IC 95%:", c1, "-", c2, "\n")

#Generar gráfico para Intercambio

p <- ggplot(resultados, aes(x = Adquirencia)) +
  geom_histogram(aes(y = after_stat(density)), bins = 30, fill = "lightblue", color = "black") +
  theme_minimal(base_size = 14) +
  labs(
    x = "Comisión de adquirencia (%)",
    y = "Densidad",
    title = "Distribución de la Comisión de adquirencia"
  ) +
  annotate("text", x = media, y = 0.5, label = paste0("Media: ", round(media, 2), "%"), size = 5) +
  annotate("text", x = mediana, y = 0.4, label = paste0("Mediana: ", round(mediana, 2), "%"), size = 5) +
  annotate("text", x = mean(ci), y = 0.3,
           label = paste0("IC 95%: [", round(ci[1], 2), "%, ", round(ci[2], 2), "%]"),
           size = 5)
p
end_time <- Sys.time()
duration <- end_time - start_time
cat("Tiempo total de ejecución:", duration, "\n")

4.2.5 Regresión Robusta

El método de regresión robusta permite analizar cambios en los resultados obtenidos producto de observaciones atípicas. Esto se consigue mediante la asignación de ponderadores a cada observación, que varían en sentido inverso a su nivel de influencia (medida por el tamaño de sus residuos), que cambian de manera iterativa hasta alcanzar un punto de convergencia.

4.2.5.1 MRR_aicc **

4.2.5.1.1 Estimación
# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MRR_aicc <- dredge(modelo_completo, rank = "AICc", fixed = "Regulacion_intercambio")

# Extraer el mejor modelo según AICc
MRR_aicc <- get.models(MRR_aicc, 3)[[1]] #Ranking=3

# Extraer variables seleccionadas
vars_seleccionadas <- names(coef(MRR_aicc))[-1]  # sin intercepto

# Ajustar regresión robusta con las variables seleccionadas

# Paso 1: Ajuste robusto con Huber
formula_robusta <- as.formula(paste("Adquirencia ~", paste(vars_seleccionadas, collapse = " + ")))
modelo_huber <- rlm(formula_robusta, data = datos_adq_con_cont,  psi = psi.huber)


# Paso 2: Ajuste robusto con Bisquare usando coef iniciales de Huber
modelo_bisquare <- rlm(formula_robusta, data = datos_adq_con_cont, psi = psi.bisquare, init = coef(modelo_huber))

MRR_aicc <- modelo_bisquare

#Visualización
stargazer(MRR_aicc, type = "html", 
          title = "Regresión robusta - Modelo AICc sin efectos fijos de tiempo", 
          column.labels = c("MCO"), model.names = F, 
          dep.var.labels = c("Tasa adquirencia"), dep.var.caption = "Variable dependiente")
Regresión robusta - Modelo AICc sin efectos fijos de tiempo
Variable dependiente
Tasa adquirencia
MCO
Am_lat 0.547***
(0.132)
Asia_Este 0.696***
(0.130)
Cajero_Autom -0.001
(0.001)
Cuenta -0.020***
(0.003)
Valor_prom -0.003**
(0.001)
Regulacion_intercambio -0.628***
(0.099)
Constant 3.444***
(0.343)
Observations 109
Residual Std. Error 0.374 (df = 102)
Note: p<0.1; p<0.05; p<0.01
4.2.5.1.2 Predicción
pred_adq_MRR_aicc=predict(MRR_aicc, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de adquirencia para Costa Rica: 1.7796408.

4.2.5.2 MRR_bic **

4.2.5.2.1 Estimación
# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MRR_bic <- dredge(modelo_completo, rank = "BIC", fixed = "Regulacion_intercambio") 

# Extraer el mejor modelo según AICc
MRR_bic <- get.models(MRR_bic, 20)[[1]] #Ranking=20

# Extraer variables seleccionadas
vars_seleccionadas <- names(coef(MRR_bic))[-1]  # sin intercepto

# Ajustar regresión robusta con las variables seleccionadas

# Paso 1: Ajuste robusto con Huber
formula_robusta <- as.formula(paste("Adquirencia ~", paste(vars_seleccionadas, collapse = " + ")))
modelo_huber <- rlm(formula_robusta, data = datos_adq_con_cont,  psi = psi.huber)


# Paso 2: Ajuste robusto con Bisquare usando coef iniciales de Huber
modelo_bisquare <- rlm(formula_robusta, data = datos_adq_con_cont, psi = psi.bisquare, init = coef(modelo_huber))

MRR_bic <- modelo_bisquare

#Visualización
stargazer(MRR_bic, type = "html", 
          title = "Regresión robusta - Modelo BIC sin efectos fijos de tiempo", 
          column.labels = c("MCO"), model.names = F, 
          dep.var.labels = c("Tasa adquirencia"), dep.var.caption = "Variable dependiente")
Regresión robusta - Modelo BIC sin efectos fijos de tiempo
Variable dependiente
Tasa adquirencia
MCO
Am_lat 0.547***
(0.132)
Asia_Este 0.696***
(0.130)
Cajero_Autom -0.001
(0.001)
Cuenta -0.020***
(0.003)
Valor_prom -0.003**
(0.001)
Regulacion_intercambio -0.628***
(0.099)
Constant 3.444***
(0.343)
Observations 109
Residual Std. Error 0.374 (df = 102)
Note: p<0.1; p<0.05; p<0.01
4.2.5.2.2 Predicción
pred_adq_MRR_bic=predict(MRR_bic, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de adquirencia para Costa Rica: 1.7796408.

4.2.5.3 MRR_aicc_et **

4.2.5.3.1 Estimación
# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MRR_aicc_et <- dredge(modelo_completo_et, rank = "AICc", fixed = variables_fijas)

# Extraer el mejor modelo según AICc
MRR_aicc_et <- get.models(MRR_aicc_et, 11)[[1]] #Ranking=11

# Obtener coeficientes
coeficientes <- coef(MRR_aicc_et)

#Filtrar nombres de coeficientes que no sean NA
coeficientes_validos <- names(coeficientes[!is.na(coeficientes)])

# Extraer variables seleccionadas
vars_seleccionadas <- names(coef(MRR_aicc_et))[-1]  # sin intercepto
vars_seleccionadas <- intersect(coeficientes_validos, vars_seleccionadas)

# Ajustar regresión robusta con las variables seleccionadas
# Paso 1: Ajuste robusto con Huber
formula_robusta <- as.formula(paste("Adquirencia ~", paste(vars_seleccionadas, collapse = " + ")))

modelo_huber <- rlm(formula_robusta, data = datos_adq_con_cont,  psi = psi.huber)

# Paso 2: Ajuste robusto con Bisquare usando coef iniciales de Huber
modelo_bisquare <- rlm(formula_robusta, data = datos_adq_con_cont, psi = psi.bisquare, init = coef(modelo_huber))

MRR_aicc_et <- modelo_bisquare

#Visualización
stargazer(MRR_aicc_et, type = "html", 
          title = "Regresión robusta - Modelo AICc con efectos fijos de tiempo", 
          column.labels = c("MCO"), model.names = F, 
          dep.var.labels = c("Tasa adquirencia"), dep.var.caption = "Variable dependiente")
Regresión robusta - Modelo AICc con efectos fijos de tiempo
Variable dependiente
Tasa adquirencia
MCO
Am_lat 0.540***
(0.133)
Asia_Este 0.928***
(0.122)
Cuenta -0.016***
(0.003)
ICH -3.211***
(0.730)
Valor_prom -0.007***
(0.001)
Año_2013 -0.526
(0.330)
Año_2014 -0.971***
(0.307)
Año_2015 -0.892***
(0.290)
Año_2016 -0.737***
(0.275)
Año_2017 -0.718***
(0.270)
Año_2018 -0.992***
(0.278)
Año_2019 -1.097***
(0.278)
Año_2020 -1.100***
(0.273)
Año_2021 -1.163***
(0.285)
Año_2022 -1.167***
(0.284)
Año_2023 -1.079***
(0.294)
Año_2024 -1.179***
(0.289)
Regulacion_intercambio -0.319***
(0.096)
Constant 6.112***
(0.581)
Observations 109
Residual Std. Error 0.262 (df = 90)
Note: p<0.1; p<0.05; p<0.01
4.2.5.3.2 Predicción
pred_adq_MRR_aicc_et=predict(MRR_aicc_et, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de adquirencia para Costa Rica: 1.7413293.

4.2.5.4 MRR_bic_et **

4.2.5.4.1 Estimación
# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MRR_bic_et <- dredge(modelo_completo_et, rank = "BIC", fixed = variables_fijas)

# Extraer el mejor modelo según AICc
MRR_bic_et <- get.models(MRR_bic_et, 10)[[1]] #Ranking=10

# Obtener coeficientes
coeficientes <- coef(MRR_bic_et)

#Filtrar nombres de coeficientes que no sean NA
coeficientes_validos <- names(coeficientes[!is.na(coeficientes)])

# Extraer variables seleccionadas
vars_seleccionadas <- names(coef(MRR_bic_et))[-1]  # sin intercepto
vars_seleccionadas <- intersect(coeficientes_validos, vars_seleccionadas)

# Ajustar regresión robusta con las variables seleccionadas
# Paso 1: Ajuste robusto con Huber
formula_robusta <- as.formula(paste("Adquirencia ~", paste(vars_seleccionadas, collapse = " + ")))

modelo_huber <- rlm(formula_robusta, data = datos_adq_con_cont,  psi = psi.huber)

# Paso 2: Ajuste robusto con Bisquare usando coef iniciales de Huber
modelo_bisquare <- rlm(formula_robusta, data = datos_adq_con_cont, psi = psi.bisquare, init = coef(modelo_huber))

MRR_bic_et <- modelo_bisquare

#Visualización
stargazer(MRR_bic_et, type = "html", 
          title = "Regresión robusta - Modelo BIC con efectos fijos de tiempo", 
          column.labels = c("MCO"), model.names = F, 
          dep.var.labels = c("Tasa adquirencia"), dep.var.caption = "Variable dependiente")
Regresión robusta - Modelo BIC con efectos fijos de tiempo
Variable dependiente
Tasa adquirencia
MCO
Asia_Este 0.885***
(0.137)
Cuenta -0.022***
(0.003)
ICH -3.688***
(0.792)
Valor_prom -0.009***
(0.001)
Año_2013 -0.828**
(0.361)
Año_2014 -1.008***
(0.346)
Año_2015 -0.905***
(0.326)
Año_2016 -0.703**
(0.310)
Año_2017 -0.746**
(0.303)
Año_2018 -0.960***
(0.313)
Año_2019 -1.119***
(0.313)
Año_2020 -1.149***
(0.305)
Año_2021 -1.105***
(0.321)
Año_2022 -1.139***
(0.319)
Año_2023 -1.160***
(0.329)
Año_2024 -1.152***
(0.326)
Regulacion_intercambio -0.507***
(0.103)
Constant 7.485***
(0.501)
Observations 109
Residual Std. Error 0.323 (df = 91)
Note: p<0.1; p<0.05; p<0.01
4.2.5.4.2 Predicción
pred_adq_MRR_bic_et <- predict(MRR_bic_et, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de adquirencia para Costa Rica: 1.5567043.

4.2.6 Restringiendo la muestra a solo países regulados

Como una prueba adicional, se estima el modelo principal, pero luego de restringir la muestra a los países que al igual que Costa Rica, son regulados.

4.2.6.1 MPR_aicc

4.2.6.1.1 Estimación
# Ajustar el modelo
modelo_completo_reg <- lm(formula_con_cont, data = datos_reg)

# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MPR_aicc <- dredge(modelo_completo_reg, rank = "AICc", fixed = "Regulacion_intercambio")

# Extraer el mejor modelo según AICc
MPR_aicc <- get.models(MPR_aicc, 3)[[1]] #Ranking=3
MPR_aicc

Call: lm(formula = Adquirencia ~ Asia_Este + Cajero_Autom + Cuenta + Debito + Densidad_Neg + Densidad_Pob + Europa + ICH + Valor_prom + 1 + Regulacion_intercambio, data = datos_reg)

Coefficients: (Intercept) Asia_Este Cajero_Autom
1.575463 -0.838183 -0.003764
Cuenta Debito Densidad_Neg
-0.019403 0.008949 0.024460
Densidad_Pob Europa ICH
-0.001054 -1.189732 2.055527
Valor_prom Regulacion_intercambio
0.003482 NA

# Errores robustos
MPR_aicc_corr_hc <- coeftest(MPR_aicc, vcov. = vcovHC(MPR_aicc, "HC1", adjust = TRUE, sandwich = TRUE))

MPR_aicc_corr_hac <- coeftest(MPR_aicc, vcov. = vcovHAC(MPR_aicc, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(MPR_aicc, MPR_aicc_corr_hc,
          type = "html", 
          title = "Estimación restringiendo muestra a países regulados - Modelo AICc sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F,
          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), 
          dep.var.caption = "Variable dependiente")
Estimación restringiendo muestra a países regulados - Modelo AICc sin efectos fijos de tiempo
Variable dependiente
Tasa adquirencia Tasa adquirencia
MCO MCO HC
(1) (2)
Asia_Este -0.838*** -0.838***
(0.229) (0.267)
Cajero_Autom -0.004*** -0.004*
(0.001) (0.002)
Cuenta -0.019*** -0.019***
(0.005) (0.004)
Debito 0.009** 0.009**
(0.004) (0.003)
Densidad_Neg 0.024** 0.024*
(0.010) (0.013)
Densidad_Pob -0.001*** -0.001***
(0.0002) (0.0003)
Europa -1.190*** -1.190***
(0.167) (0.203)
ICH 2.056** 2.056
(1.018) (1.454)
Valor_prom 0.003* 0.003*
(0.002) (0.002)
Regulacion_intercambio
Constant 1.575** 1.575
(0.607) (0.945)
Observations 62
R2 0.887
Adjusted R2 0.868
Residual Std. Error 0.250 (df = 52)
F Statistic 45.431*** (df = 9; 52)
Note: p<0.1; p<0.05; p<0.01
4.2.6.1.2 Predicción
#Pronóstico para CR
pred_adq_MPR_aicc <- predict(MPR_aicc, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de adquirencia para Costa Rica: 1.9899698.

4.2.6.2 MPR_bic

4.2.6.2.1 Estimación
# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MPR_bic <- dredge(modelo_completo_reg, rank = "BIC", fixed = "Regulacion_intercambio")

# Extraer el mejor modelo según AICc
MPR_bic <- get.models(MPR_bic, 2)[[1]] #Ranking=2
MPR_bic

Call: lm(formula = Adquirencia ~ Asia_Este + Cajero_Autom + Cuenta + Debito + Densidad_Pob + Europa + 1 + Regulacion_intercambio, data = datos_reg)

Coefficients: (Intercept) Asia_Este Cajero_Autom
2.8002776 -0.5761905 -0.0030060
Cuenta Debito Densidad_Pob
-0.0174851 0.0129198 -0.0008075
Europa Regulacion_intercambio
-1.1670570 NA

# Errores robustos
MPR_bic_corr_hc <- coeftest(MPR_bic, vcov. = vcovHC(MPR_bic, "HC1", adjust = TRUE, sandwich = TRUE)) 

MPR_bic_corr_hac <- coeftest(MPR_bic, vcov. = vcovHAC(MPR_bic, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(MPR_bic, MPR_bic_corr_hc, type = "html",
          title = "Estimación restringiendo muestra a países regulados - Modelo BIC sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), 
          dep.var.caption = "Variable dependiente")
Estimación restringiendo muestra a países regulados - Modelo BIC sin efectos fijos de tiempo
Variable dependiente
Tasa adquirencia Tasa adquirencia
MCO MCO HC
(1) (2)
Asia_Este -0.576*** -0.576***
(0.182) (0.206)
Cajero_Autom -0.003** -0.003
(0.001) (0.002)
Cuenta -0.017*** -0.017***
(0.005) (0.004)
Debito 0.013*** 0.013***
(0.004) (0.004)
Densidad_Pob -0.001*** -0.001***
(0.0002) (0.0003)
Europa -1.167*** -1.167***
(0.166) (0.179)
Regulacion_intercambio
Constant 2.800*** 2.800***
(0.157) (0.125)
Observations 62
R2 0.869
Adjusted R2 0.854
Residual Std. Error 0.262 (df = 55)
F Statistic 60.657*** (df = 6; 55)
Note: p<0.1; p<0.05; p<0.01
4.2.6.2.2 Predicción
#Pronóstico para CR
pred_adq_MPR_bic <- predict(MPR_bic, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de adquirencia para Costa Rica: 2.0956035.

4.2.6.3 MPR_aicc_et

4.2.6.3.1 Estimación
# Ajustar el modelo
#modelo_completo_et_reg <- lm(formula_con_cont_t, data = datos_reg)
modelo_completo_et_reg <- lm(Adquirencia ~ Regulacion_intercambio + Cajero_Autom + Cuenta 
                             + Debito + Densidad_Pob + Asia_Este + Europa + Año_2015 + 
                             Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + 
                             Año_2021 + Año_2022 + Año_2023 + Año_2024, data = datos_reg)

# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MPR_aicc_et <- dredge(modelo_completo_et_reg, rank = "AICc", fixed = variables_fijas)

# Extraer el mejor modelo según AICc
MPR_aicc_et <- get.models(MPR_aicc_et, 1)[[1]] 
MPR_aicc_et

Call: lm(formula = Adquirencia ~ Asia_Este + Cajero_Autom + Cuenta + Debito + Densidad_Pob + Europa + 1 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + Año_2024 + Regulacion_intercambio, data = datos_reg)

Coefficients: (Intercept) Asia_Este Cajero_Autom
2.788723 -0.739431 -0.002792
Cuenta Debito Densidad_Pob
-0.016767 0.014887 -0.001094
Europa Año_2015 Año_2016
-1.430227 0.071475 -0.041884
Año_2017 Año_2018 Año_2019
0.144874 -0.104257 -0.134432
Año_2020 Año_2021 Año_2022
-0.191870 -0.226196 -0.199707
Año_2023 Año_2024 Regulacion_intercambio
-0.053959 -0.203911 NA

# Errores robustos
MPR_aicc_et_corr_hc <- coeftest(MPR_aicc_et, vcov. = vcovHC(MPR_aicc_et, "HC1", adjust = TRUE, sandwich = TRUE))

MPR_aicc_et_corr_hac <- coeftest(MPR_aicc_et, vcov. = vcovHAC(MPR_aicc_et, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(MPR_aicc_et, MPR_aicc_et_corr_hc,
          type = "html", 
          title = "Estimación restringiendo muestra a países regulados - Modelo AICc con efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F,
          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), 
          dep.var.caption = "Variable dependiente")
Estimación restringiendo muestra a países regulados - Modelo AICc con efectos fijos de tiempo
Variable dependiente
Tasa adquirencia Tasa adquirencia
MCO MCO HC
(1) (2)
Asia_Este -0.739*** -0.739***
(0.193) (0.250)
Cajero_Autom -0.003** -0.003
(0.001) (0.002)
Cuenta -0.017*** -0.017***
(0.005) (0.004)
Debito 0.015*** 0.015***
(0.004) (0.004)
Densidad_Pob -0.001*** -0.001***
(0.0002) (0.0003)
Europa -1.430*** -1.430***
(0.180) (0.228)
Año_2015 0.071 0.071
(0.239) (0.127)
Año_2016 -0.042 -0.042
(0.225) (0.101)
Año_2017 0.145 0.145**
(0.191) (0.070)
Año_2018 -0.104 -0.104
(0.216) (0.071)
Año_2019 -0.134 -0.134*
(0.223) (0.072)
Año_2020 -0.192 -0.192***
(0.224) (0.064)
Año_2021 -0.226 -0.226**
(0.226) (0.098)
Año_2022 -0.200 -0.200**
(0.236) (0.082)
Año_2023 -0.054 -0.054
(0.223) (0.162)
Año_2024 -0.204 -0.204*
(0.236) (0.102)
Regulacion_intercambio
Constant 2.789*** 2.789***
(0.233) (0.151)
Observations 62
R2 0.899
Adjusted R2 0.863
Residual Std. Error 0.254 (df = 45)
F Statistic 25.014*** (df = 16; 45)
Note: p<0.1; p<0.05; p<0.01
4.2.6.3.2 Predicción
#Pronóstico para CR
pred_adq_MPR_aicc_et <- predict(MPR_aicc_et, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de adquirencia para Costa Rica: 2.0400915.

4.2.6.4 MPR_bic_et

4.2.6.4.1 Estimación
# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MPR_bic_et <- dredge(modelo_completo_et_reg, rank = "BIC", fixed = variables_fijas)

# Extraer el mejor modelo según AICc
MPR_bic_et <- get.models(MPR_bic_et, 1)[[1]] 
MPR_bic_et

Call: lm(formula = Adquirencia ~ Asia_Este + Cajero_Autom + Cuenta + Debito + Densidad_Pob + Europa + 1 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + Año_2024 + Regulacion_intercambio, data = datos_reg)

Coefficients: (Intercept) Asia_Este Cajero_Autom
2.788723 -0.739431 -0.002792
Cuenta Debito Densidad_Pob
-0.016767 0.014887 -0.001094
Europa Año_2015 Año_2016
-1.430227 0.071475 -0.041884
Año_2017 Año_2018 Año_2019
0.144874 -0.104257 -0.134432
Año_2020 Año_2021 Año_2022
-0.191870 -0.226196 -0.199707
Año_2023 Año_2024 Regulacion_intercambio
-0.053959 -0.203911 NA

# Errores robustos
MPR_bic_et_corr_hc <- coeftest(MPR_bic_et, vcov. = vcovHC(MPR_bic_et, "HC1", adjust = TRUE, sandwich = TRUE))

MPR_bic_et_corr_hac <- coeftest(MPR_bic_et, vcov. = vcovHAC(MPR_bic_et, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(MPR_bic_et, MPR_bic_et_corr_hc,
          type = "html", 
          title = "Estimación restringiendo muestra a países regulados - Modelo BIC con efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F,
          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), 
          dep.var.caption = "Variable dependiente")
Estimación restringiendo muestra a países regulados - Modelo BIC con efectos fijos de tiempo
Variable dependiente
Tasa adquirencia Tasa adquirencia
MCO MCO HC
(1) (2)
Asia_Este -0.739*** -0.739***
(0.193) (0.250)
Cajero_Autom -0.003** -0.003
(0.001) (0.002)
Cuenta -0.017*** -0.017***
(0.005) (0.004)
Debito 0.015*** 0.015***
(0.004) (0.004)
Densidad_Pob -0.001*** -0.001***
(0.0002) (0.0003)
Europa -1.430*** -1.430***
(0.180) (0.228)
Año_2015 0.071 0.071
(0.239) (0.127)
Año_2016 -0.042 -0.042
(0.225) (0.101)
Año_2017 0.145 0.145**
(0.191) (0.070)
Año_2018 -0.104 -0.104
(0.216) (0.071)
Año_2019 -0.134 -0.134*
(0.223) (0.072)
Año_2020 -0.192 -0.192***
(0.224) (0.064)
Año_2021 -0.226 -0.226**
(0.226) (0.098)
Año_2022 -0.200 -0.200**
(0.236) (0.082)
Año_2023 -0.054 -0.054
(0.223) (0.162)
Año_2024 -0.204 -0.204*
(0.236) (0.102)
Regulacion_intercambio
Constant 2.789*** 2.789***
(0.233) (0.151)
Observations 62
R2 0.899
Adjusted R2 0.863
Residual Std. Error 0.254 (df = 45)
F Statistic 25.014*** (df = 16; 45)
Note: p<0.1; p<0.05; p<0.01
4.2.6.4.2 Predicción
#Pronóstico para CR
pred_adq_MPR_bic_et <- predict(MPR_bic_et, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de adquirencia para Costa Rica: 2.0400915.

4.2.7 Ampliando la definición de regulación de intercambio o adquirencia

En el análisis principal, la variable regulación hace referencia a regulación en las comisiones de intercambio. Esto se debe a que son relativamente pocos los países que regulan adquirencia. Sin embargo, es posible generar una variable dicotómica que haga referencia a que el país en cuestión tiene regulación sobre intercambio o adquirencia.

# Arreglo de datos
datos_reg_amp <- datos

# Crear una nueva variable lógica que sea TRUE si se cumple alguna de las dos condiciones

datos_reg_amp$Regulacion_inter_adq <- ifelse(datos_reg_amp$Regulacion_intercambio == 1 | datos_reg_amp$Regulacion_adquirencia == 1, 1, 0)

#Se filtran los datos
datos_reg_amp <- datos_reg_amp %>%
  select(all_of(variables_interes), Regulacion_inter_adq) %>% 
  select(-Regulacion_intercambio) %>%
  na.omit()

# Crear una nueva variable lógica que sea TRUE si se cumple alguna de las dos condiciones
data_CR_reg_amp <- data_CR
data_CR_reg_amp$Regulacion_inter_adq <- ifelse(data_CR_reg_amp$Regulacion_intercambio == 1 | data_CR_reg_amp$Regulacion_adquirencia == 1, 1, 0)

# Incluir las variables de control sin controles de tiempo
formula_con_cont_amp <- as.formula(
  paste("Adquirencia ~ Regulacion_inter_adq +", paste(controles, collapse = " + "))
)

# Incluir las variables de control con controles de tiempo
formula_con_cont_t_amp <- as.formula(
  paste("Adquirencia ~ Regulacion_inter_adq +", paste(controles, collapse = " + ")," + ", paste(ef_tiempo, collapse = " + "))
)

# Variables fijas
variables_fijas_amp <- c("Regulacion_inter_adq", paste0("Año_", 2010:2025))

4.2.7.1 MADR_aicc

4.2.7.1.1 Estimación
# Ajustar el modelo
modelo_completo_reg_amp <- lm(formula_con_cont_amp, data = datos_reg_amp)

# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MADR_aicc <- dredge(modelo_completo_reg_amp, rank = "AICc", fixed = "Regulacion_inter_adq")

# Extraer el mejor modelo según AICc
MADR_aicc <- get.models(MADR_aicc, 2)[[1]] #Ranking=2
MADR_aicc

Call: lm(formula = Adquirencia ~ Am_lat + Asia_Este + Debito + ICH + Valor_prom + 1 + Regulacion_inter_adq, data = datos_reg_amp)

Coefficients: (Intercept) Am_lat Asia_Este
4.803100 0.555058 0.659575
Debito ICH Valor_prom
-0.013695 -3.297103 -0.004574
Regulacion_inter_adq
-0.125795

# Errores robustos
MADR_aicc_corr_hc <- coeftest(MADR_aicc, vcov. = vcovHC(MADR_aicc, "HC1", adjust = TRUE, sandwich = TRUE))

MADR_aicc_corr_hac <- coeftest(MADR_aicc, vcov. = vcovHAC(MADR_aicc, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(MADR_aicc, MADR_aicc_corr_hc,
          type = "html", 
          title = "Estimación ampliando definición de regulación - Modelo AICc sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F,
          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), 
          dep.var.caption = "Variable dependiente")
Estimación ampliando definición de regulación - Modelo AICc sin efectos fijos de tiempo
Variable dependiente
Tasa adquirencia Tasa adquirencia
MCO MCO HC
(1) (2)
Am_lat 0.555*** 0.555***
(0.202) (0.165)
Asia_Este 0.660*** 0.660***
(0.189) (0.161)
Debito -0.014*** -0.014***
(0.004) (0.004)
ICH -3.297*** -3.297***
(1.061) (0.974)
Valor_prom -0.005** -0.005**
(0.002) (0.002)
Regulacion_inter_adq -0.126 -0.126
(0.148) (0.171)
Constant 4.803*** 4.803***
(0.802) (0.693)
Observations 109
R2 0.641
Adjusted R2 0.620
Residual Std. Error 0.598 (df = 102)
F Statistic 30.327*** (df = 6; 102)
Note: p<0.1; p<0.05; p<0.01
4.2.7.1.2 Predicción
#Pronóstico para CR
pred_adq_MADR_aicc <- predict(MADR_aicc, newdata = data_CR_reg_amp, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de adquirencia para Costa Rica: 2.1089133.

4.2.7.2 MADR_bic

4.2.7.2.1 Estimación
# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MADR_bic <- dredge(modelo_completo_reg_amp, rank = "BIC", fixed = "Regulacion_inter_adq")

# Extraer el mejor modelo según AICc
MADR_bic <- get.models(MADR_bic, 15)[[1]] #Ranking=15
MADR_bic

Call: lm(formula = Adquirencia ~ Am_lat + Asia_Este + Debito + ICH + 1 + Regulacion_inter_adq, data = datos_reg_amp)

Coefficients: (Intercept) Am_lat Asia_Este
3.748928 0.775947 0.533667
Debito ICH Regulacion_inter_adq
-0.009564 -2.789206 -0.058716

# Errores robustos
MADR_bic_corr_hc <- coeftest(MADR_bic, vcov. = vcovHC(MADR_bic, "HC1", adjust = TRUE, sandwich = TRUE))

MADR_bic_corr_hac <- coeftest(MADR_bic, vcov. = vcovHAC(MADR_bic, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(MADR_bic, MADR_bic_corr_hc, type = "html",
          title = "Estimación ampliando definición de regulación - Modelo BIC sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), 
          dep.var.caption = "Variable dependiente")
Estimación ampliando definición de regulación - Modelo BIC sin efectos fijos de tiempo
Variable dependiente
Tasa adquirencia Tasa adquirencia
MCO MCO HC
(1) (2)
Am_lat 0.776*** 0.776***
(0.175) (0.161)
Asia_Este 0.534*** 0.534***
(0.182) (0.162)
Debito -0.010*** -0.010***
(0.003) (0.003)
ICH -2.789*** -2.789***
(1.049) (0.998)
Regulacion_inter_adq -0.059 -0.059
(0.147) (0.186)
Constant 3.749*** 3.749***
(0.630) (0.618)
Observations 109
R2 0.626
Adjusted R2 0.608
Residual Std. Error 0.608 (df = 103)
F Statistic 34.433*** (df = 5; 103)
Note: p<0.1; p<0.05; p<0.01
4.2.7.2.2 Predicción
#Pronóstico para CR
pred_adq_MADR_bic <- predict(MADR_bic, newdata = data_CR_reg_amp, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de adquirencia para Costa Rica: 2.1110709.

4.2.7.3 MADR_aicc_et **

4.2.7.3.1 Estimación
# Ajustar el modelo
#modelo_completo_t_reg_amp <- lm(formula_con_cont_t_amp, data = datos_reg_amp)
modelo_completo_t_reg_amp <- lm(Adquirencia ~ Regulacion_inter_adq + Debito + ICH + 
                                  Valor_prom + Asia_Este + Am_lat + Año_2014 + Año_2015 + 
                                  Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + 
                                  Año_2021 + Año_2022 + Año_2023 + Año_2024 + Año_2025, 
                                  data = datos_reg_amp)

# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MADR_aicc_et <- dredge(modelo_completo_t_reg_amp, rank = "AICc", fixed = variables_fijas_amp)

# Extraer el mejor modelo según AICc
MADR_aicc_et <- get.models(MADR_aicc_et, 1)[[1]]
MADR_aicc_et

Call: lm(formula = Adquirencia ~ Am_lat + Asia_Este + Debito + ICH + Valor_prom + 1 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + Año_2024 + Año_2025 + Regulacion_inter_adq, data = datos_reg_amp)

Coefficients: (Intercept) Am_lat Asia_Este
5.538061 0.576872 0.690679
Debito ICH Valor_prom
-0.011702 -4.075327 -0.005321
Año_2014 Año_2015 Año_2016
-0.609202 -0.234726 0.073781
Año_2017 Año_2018 Año_2019
-0.284732 -0.241001 -0.493744
Año_2020 Año_2021 Año_2022
-0.491143 -0.738630 -0.379989
Año_2023 Año_2024 Año_2025
-0.610790 -0.695527 0.351102
Regulacion_inter_adq
-0.060761

# Errores robustos
MADR_aicc_et_corr_hc <- coeftest(MADR_aicc_et, vcov. = vcovHC(MADR_aicc_et, "HC1", adjust = TRUE, sandwich = TRUE))

MADR_aicc_et_corr_hac <- coeftest(MADR_aicc_et, vcov. = vcovHAC(MADR_aicc_et, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(MADR_aicc_et, MADR_aicc_et_corr_hc,
          type = "html", 
          title = "Estimación ampliando definición de regulación - Modelo AICc con efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F,
          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), 
          dep.var.caption = "Variable dependiente")
Estimación ampliando definición de regulación - Modelo AICc con efectos fijos de tiempo
Variable dependiente
Tasa adquirencia Tasa adquirencia
MCO MCO HC
(1) (2)
Am_lat 0.577*** 0.577***
(0.218) (0.195)
Asia_Este 0.691*** 0.691***
(0.204) (0.194)
Debito -0.012*** -0.012***
(0.004) (0.004)
ICH -4.075*** -4.075***
(1.143) (1.120)
Valor_prom -0.005** -0.005**
(0.002) (0.002)
Año_2014 -0.609 -0.609**
(0.467) (0.240)
Año_2015 -0.235 -0.235
(0.447) (0.337)
Año_2016 0.074 0.074
(0.424) (0.348)
Año_2017 -0.285 -0.285
(0.393) (0.235)
Año_2018 -0.241 -0.241
(0.420) (0.378)
Año_2019 -0.494 -0.494*
(0.422) (0.267)
Año_2020 -0.491 -0.491*
(0.410) (0.293)
Año_2021 -0.739* -0.739***
(0.440) (0.251)
Año_2022 -0.380 -0.380
(0.435) (0.420)
Año_2023 -0.611 -0.611**
(0.441) (0.247)
Año_2024 -0.696 -0.696***
(0.446) (0.255)
Año_2025 0.351 0.351
(0.558) (0.424)
Regulacion_inter_adq -0.061 -0.061
(0.156) (0.179)
Constant 5.538*** 5.538***
(0.858) (0.832)
Observations 109
R2 0.699
Adjusted R2 0.639
Residual Std. Error 0.583 (df = 90)
F Statistic 11.625*** (df = 18; 90)
Note: p<0.1; p<0.05; p<0.01
4.2.7.3.2 Predicción
#Pronóstico para CR
pred_adq_MADR_aicc_et <- predict(MADR_aicc_et, newdata = data_CR_reg_amp, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de adquirencia para Costa Rica: 1.8404579.

4.2.7.4 MADR_bic_et

4.2.7.4.1 Estimación
# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MADR_bic_et <- dredge(modelo_completo_t_reg_amp, rank = "BIC", fixed = variables_fijas_amp)

# Extraer el mejor modelo según AICc
MADR_bic_et <- get.models(MADR_bic_et, 1)[[1]]
MADR_bic_et

Call: lm(formula = Adquirencia ~ Am_lat + Asia_Este + Debito + ICH + Valor_prom + 1 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + Año_2024 + Año_2025 + Regulacion_inter_adq, data = datos_reg_amp)

Coefficients: (Intercept) Am_lat Asia_Este
5.538061 0.576872 0.690679
Debito ICH Valor_prom
-0.011702 -4.075327 -0.005321
Año_2014 Año_2015 Año_2016
-0.609202 -0.234726 0.073781
Año_2017 Año_2018 Año_2019
-0.284732 -0.241001 -0.493744
Año_2020 Año_2021 Año_2022
-0.491143 -0.738630 -0.379989
Año_2023 Año_2024 Año_2025
-0.610790 -0.695527 0.351102
Regulacion_inter_adq
-0.060761

# Errores robustos
MADR_bic_et_corr_hc <- coeftest(MADR_bic_et, vcov. = vcovHC(MADR_bic_et, "HC1", adjust = TRUE, sandwich = TRUE))

MADR_bic_et_corr_hac <- coeftest(MADR_bic_et, vcov. = vcovHAC(MADR_bic_et, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(MADR_bic_et, MADR_bic_et_corr_hc,
          type = "html", 
          title = "Estimación ampliando definición de regulación - Modelo BIC con efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F,
          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), 
          dep.var.caption = "Variable dependiente")
Estimación ampliando definición de regulación - Modelo BIC con efectos fijos de tiempo
Variable dependiente
Tasa adquirencia Tasa adquirencia
MCO MCO HC
(1) (2)
Am_lat 0.577*** 0.577***
(0.218) (0.195)
Asia_Este 0.691*** 0.691***
(0.204) (0.194)
Debito -0.012*** -0.012***
(0.004) (0.004)
ICH -4.075*** -4.075***
(1.143) (1.120)
Valor_prom -0.005** -0.005**
(0.002) (0.002)
Año_2014 -0.609 -0.609**
(0.467) (0.240)
Año_2015 -0.235 -0.235
(0.447) (0.337)
Año_2016 0.074 0.074
(0.424) (0.348)
Año_2017 -0.285 -0.285
(0.393) (0.235)
Año_2018 -0.241 -0.241
(0.420) (0.378)
Año_2019 -0.494 -0.494*
(0.422) (0.267)
Año_2020 -0.491 -0.491*
(0.410) (0.293)
Año_2021 -0.739* -0.739***
(0.440) (0.251)
Año_2022 -0.380 -0.380
(0.435) (0.420)
Año_2023 -0.611 -0.611**
(0.441) (0.247)
Año_2024 -0.696 -0.696***
(0.446) (0.255)
Año_2025 0.351 0.351
(0.558) (0.424)
Regulacion_inter_adq -0.061 -0.061
(0.156) (0.179)
Constant 5.538*** 5.538***
(0.858) (0.832)
Observations 109
R2 0.699
Adjusted R2 0.639
Residual Std. Error 0.583 (df = 90)
F Statistic 11.625*** (df = 18; 90)
Note: p<0.1; p<0.05; p<0.01
4.2.7.4.2 Predicción
#Pronóstico para CR
pred_adq_MADR_bic_et <- predict(MADR_bic_et, newdata = data_CR_reg_amp, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de adquirencia para Costa Rica: 1.8404579.

4.2.8 Regresión que utilice las características observadas más recientes para cada país

La estimación principal utiliza las características observadas para los países al momento de la fijación de determinado porcentaje de comisión. Una forma alternativa de estimar el modelo es considerar para cada país las comisiones de intercambio o de adquirencia vigentes y las características observables más recientes, que en la mayoría de los países corresponde a información para el 2024.

#Datos
datos_2024 <- read_excel("D:/Documentos Usuarios/villaltaca/OneDrive - Banco Central de Costa Rica/DIE/Revisiones de documentos/Fijación 2025/Datos y Estimación - Adquirencia e intercambio/Base_datos_adquirencia_intercambio_2024.xlsx")

datos_2024 <- datos_2024 %>% 
  dplyr :: select(-Intercambio) %>% 
  na.omit

4.2.8.1 MCR_aicc

4.2.8.1.1 Estimación
# Ajustar el modelo
modelo_completo_2024 <- lm(formula_con_cont, data = datos_2024)

# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MCR_aicc <- dredge(modelo_completo_2024, rank = "AICc", fixed = "Regulacion_intercambio")

# Extraer el mejor modelo según AICc
MCR_aicc <- get.models(MCR_aicc, 3)[[1]] #Ranking=3
MCR_aicc

Call: lm(formula = Adquirencia ~ Am_lat + Cajero_Autom + PIB_pc_PPA + 1 + Regulacion_intercambio, data = datos_2024)

Coefficients: (Intercept) Am_lat Cajero_Autom
2.719e+00 7.899e-01 -3.838e-03
PIB_pc_PPA Regulacion_intercambio
-9.249e-06 -9.320e-01

# Errores robustos
MCR_aicc_corr_hc <- coeftest(MCR_aicc, vcov. = vcovHC(MCR_aicc, "HC1", adjust = TRUE, sandwich = TRUE))

MCR_aicc_corr_hac <- coeftest(MCR_aicc, vcov. = vcovHAC(MCR_aicc, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(MCR_aicc, MCR_aicc_corr_hc,
          type = "html", 
          title = "Estimación usando características más recientes - Modelo AICc sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F,
          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), 
          dep.var.caption = "Variable dependiente")
Estimación usando características más recientes - Modelo AICc sin efectos fijos de tiempo
Variable dependiente
Tasa adquirencia Tasa adquirencia
MCO MCO HC
(1) (2)
Am_lat 0.790** 0.790**
(0.296) (0.323)
Cajero_Autom -0.004** -0.004***
(0.002) (0.001)
PIB_pc_PPA -0.00001** -0.00001*
(0.00000) (0.00000)
Regulacion_intercambio -0.932*** -0.932***
(0.302) (0.331)
Constant 2.719*** 2.719***
(0.339) (0.444)
Observations 37
R2 0.700
Adjusted R2 0.663
Residual Std. Error 0.562 (df = 32)
F Statistic 18.668*** (df = 4; 32)
Note: p<0.1; p<0.05; p<0.01
4.2.8.1.2 Predicción
#Pronóstico para CR
pred_adq_MCR_aicc <- predict(MCR_aicc, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de adquirencia para Costa Rica: 2.0856725.

4.2.8.2 MCR_bic

4.2.8.2.1 Estimación
# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MCR_bic <- dredge(modelo_completo_2024, rank = "BIC", fixed = "Regulacion_intercambio")

# Extraer el mejor modelo según AICc
MCR_bic <- get.models(MCR_bic, 4)[[1]] #Ranking=4
MCR_bic

Call: lm(formula = Adquirencia ~ Am_lat + Cajero_Autom + PIB_pc_PPA + 1 + Regulacion_intercambio, data = datos_2024)

Coefficients: (Intercept) Am_lat Cajero_Autom
2.719e+00 7.899e-01 -3.838e-03
PIB_pc_PPA Regulacion_intercambio
-9.249e-06 -9.320e-01

# Errores robustos
MCR_bic_corr_hc <- coeftest(MCR_bic, vcov. = vcovHC(MCR_bic, "HC1", adjust = TRUE, sandwich = TRUE))

MCR_bic_corr_hac <- coeftest(MCR_bic, vcov. = vcovHAC(MCR_bic, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(MCR_bic, MCR_bic_corr_hc,
          type = "html", 
          title = "Estimación usando características más recientes - Modelo BIC sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F,
          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), 
          dep.var.caption = "Variable dependiente")
Estimación usando características más recientes - Modelo BIC sin efectos fijos de tiempo
Variable dependiente
Tasa adquirencia Tasa adquirencia
MCO MCO HC
(1) (2)
Am_lat 0.790** 0.790**
(0.296) (0.323)
Cajero_Autom -0.004** -0.004***
(0.002) (0.001)
PIB_pc_PPA -0.00001** -0.00001*
(0.00000) (0.00000)
Regulacion_intercambio -0.932*** -0.932***
(0.302) (0.331)
Constant 2.719*** 2.719***
(0.339) (0.444)
Observations 37
R2 0.700
Adjusted R2 0.663
Residual Std. Error 0.562 (df = 32)
F Statistic 18.668*** (df = 4; 32)
Note: p<0.1; p<0.05; p<0.01
4.2.8.2.2 Predicción
#Pronóstico para CR
pred_adq_MCR_bic <- predict(MCR_bic, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de adquirencia para Costa Rica: 2.0856725.

4.2.9 Regresión con variables propuestas por el Fondo Monetario Internacional (FMI)

El Fondo Monetario Internacional (FMI) publicó en diciembre de 2023 el estudio “Determinants of Card Payments Fees in A Cross-Country Analysis”, donde se replica y amplía el análisis de comparación internacional que realiza el BCCR para establecer los topes máximos de comisiones. La forma de ampliar el estudio fue incorporar las variables margen de interés neto y el grado de concentración de activos bancarios.

# Datos
datos_fmi <- datos %>%
  select(all_of(variables_interes), c("Margen_neto", "Concentracion_bancaria")) %>%
  na.omit()

#Definir el conjunto de posibles variables de control

controles_fmi <- c("Cajero_Autom", "Crimen", "Cuenta", "Credito", "Debito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Pago_digital", "Valor_prom", "Europa", "Asia_Este", "Am_lat", "Margen_neto", "Concentracion_bancaria")

# Incluir las variables de control
formula_con_cont_fmi <- as.formula(
  paste("Adquirencia ~ Regulacion_intercambio +", paste(controles_fmi, collapse = " + "))
)

# Incluir las variables de control
formula_con_cont_t_fmi <- as.formula(
  paste("Adquirencia ~ Regulacion_intercambio +", paste(controles_fmi, collapse = " + ")," + ", paste(ef_tiempo, collapse = " + "))
)

4.2.9.1 MFMI_aicc

4.2.9.1.1 Estimación
# Ajustar el modelo
modelo_completo_fmi <- lm(formula_con_cont_fmi, data = datos_fmi)

# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MFMI_aicc <- dredge(modelo_completo_fmi, rank = "AICc", fixed = "Regulacion_intercambio")

# Extraer el mejor modelo según AICc
MFMI_aicc <- get.models(MFMI_aicc, 1)[[1]]
MFMI_aicc

Call: lm(formula = Adquirencia ~ Asia_Este + Cajero_Autom + Concentracion_bancaria + Cuenta + Margen_neto + Valor_prom + 1 + Regulacion_intercambio, data = datos_fmi)

Coefficients: (Intercept) Asia_Este Cajero_Autom
4.210035 0.627097 -0.002401
Concentracion_bancaria Cuenta Margen_neto
-0.008499 -0.015474 0.103369
Valor_prom Regulacion_intercambio
-0.005827 -1.004299

# Errores robustos
MFMI_aicc_corr_hc <- coeftest(MFMI_aicc, vcov. = vcovHC(MFMI_aicc, "HC1", adjust = TRUE, sandwich = TRUE))

MFMI_aicc_corr_hac <- coeftest(MFMI_aicc, vcov. = vcovHAC(MFMI_aicc, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(MFMI_aicc, MFMI_aicc_corr_hc,
          type = "html", 
          title = "Réplica análisis FMI - Modelo AICc sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F,
          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), 
          dep.var.caption = "Variable dependiente")
Réplica análisis FMI - Modelo AICc sin efectos fijos de tiempo
Variable dependiente
Tasa adquirencia Tasa adquirencia
MCO MCO HC
(1) (2)
Asia_Este 0.627*** 0.627***
(0.175) (0.106)
Cajero_Autom -0.002** -0.002**
(0.001) (0.001)
Concentracion_bancaria -0.008* -0.008
(0.005) (0.006)
Cuenta -0.015*** -0.015***
(0.004) (0.004)
Margen_neto 0.103*** 0.103***
(0.032) (0.026)
Valor_prom -0.006*** -0.006***
(0.002) (0.002)
Regulacion_intercambio -1.004*** -1.004***
(0.123) (0.159)
Constant 4.210*** 4.210***
(0.504) (0.618)
Observations 109
R2 0.724
Adjusted R2 0.704
Residual Std. Error 0.527 (df = 101)
F Statistic 37.759*** (df = 7; 101)
Note: p<0.1; p<0.05; p<0.01
4.2.9.1.2 Predicción
#Pronóstico para CR
pred_adq_MFMI_aicc <- predict(MFMI_aicc, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de adquirencia para Costa Rica: 1.7689141.

4.2.9.2 MFMI_bic

4.2.9.2.1 Estimación
# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MFMI_bic <- dredge(modelo_completo_fmi, rank = "BIC", fixed = "Regulacion_intercambio")

# Extraer el mejor modelo según AICc
MFMI_bic <- get.models(MFMI_bic, 6)[[1]] #Ranking=6
MFMI_bic

Call: lm(formula = Adquirencia ~ Asia_Este + Cajero_Autom + Cuenta + Margen_neto + Valor_prom + 1 + Regulacion_intercambio, data = datos_fmi)

Coefficients: (Intercept) Asia_Este Cajero_Autom
3.750028 0.682036 -0.002511
Cuenta Margen_neto Valor_prom
-0.017448 0.108620 -0.005548
Regulacion_intercambio
-0.953518

# Errores robustos
MFMI_bic_corr_hc <- coeftest(MFMI_bic, vcov. = vcovHC(MFMI_bic, "HC1", adjust = TRUE, sandwich = TRUE))

MFMI_bic_corr_hac <- coeftest(MFMI_bic, vcov. = vcovHAC(MFMI_bic, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(MFMI_bic, MFMI_bic_corr_hc,
          type = "html", 
          title = "Réplica análisis FMI - Modelo BIC sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F,
          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), 
          dep.var.caption = "Variable dependiente")
Réplica análisis FMI - Modelo BIC sin efectos fijos de tiempo
Variable dependiente
Tasa adquirencia Tasa adquirencia
MCO MCO HC
(1) (2)
Asia_Este 0.682*** 0.682***
(0.174) (0.116)
Cajero_Autom -0.003** -0.003**
(0.001) (0.001)
Cuenta -0.017*** -0.017***
(0.004) (0.003)
Margen_neto 0.109*** 0.109***
(0.032) (0.025)
Valor_prom -0.006*** -0.006***
(0.002) (0.002)
Regulacion_intercambio -0.954*** -0.954***
(0.122) (0.141)
Constant 3.750*** 3.750***
(0.443) (0.444)
Observations 109
R2 0.714
Adjusted R2 0.697
Residual Std. Error 0.534 (df = 102)
F Statistic 42.474*** (df = 6; 102)
Note: p<0.1; p<0.05; p<0.01
4.2.9.2.2 Predicción
#Pronóstico para CR
pred_adq_MFMI_bic <- predict(MFMI_bic, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de adquirencia para Costa Rica: 1.7260665.

4.2.9.3 MFMI_aicc_et

4.2.9.3.1 Estimación
# Ajustar el modelo
#modelo_completo_fmi_et <- lm(formula_con_cont_t_fmi, data = datos_fmi)
modelo_completo_fmi_et <- lm(Adquirencia ~ Regulacion_intercambio + Cajero_Autom + Cuenta 
                             + Valor_prom +Asia_Este + Margen_neto + 
                             Concentracion_bancaria + Año_2014 + Año_2015 + Año_2016 + 
                             Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + 
                             Año_2022 + Año_2023 + Año_2024 + Año_2025, data = datos_fmi)

# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MFMI_aicc_et <- dredge(modelo_completo_fmi_et, rank = "AICc", fixed = variables_fijas)

# Extraer el mejor modelo según AICc
MFMI_aicc_et <- get.models(MFMI_aicc_et, 1)[[1]]
MFMI_aicc_et

Call: lm(formula = Adquirencia ~ Asia_Este + Cajero_Autom + Concentracion_bancaria + Cuenta + Margen_neto + Valor_prom + 1 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + Año_2024 + Año_2025 + Regulacion_intercambio, data = datos_fmi)

Coefficients: (Intercept) Asia_Este Cajero_Autom
3.910686 0.650871 -0.002001
Concentracion_bancaria Cuenta Margen_neto
-0.008957 -0.014936 0.121291
Valor_prom Año_2014 Año_2015
-0.006208 0.206209 0.573591
Año_2016 Año_2017 Año_2018
0.371527 0.288132 0.295020
Año_2019 Año_2020 Año_2021
-0.156742 -0.056793 -0.004514
Año_2022 Año_2023 Año_2024
0.356028 0.230059 0.058608
Año_2025 Regulacion_intercambio
0.942497 -1.008481

# Errores robustos
MFMI_aicc_et_corr_hc <- coeftest(MFMI_aicc_et, vcov. = vcovHC(MFMI_aicc_et, "HC1", adjust = TRUE, sandwich = TRUE))

MFMI_aicc_et_corr_hac <- coeftest(MFMI_aicc_et, vcov. = vcovHAC(MFMI_aicc_et, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(MFMI_aicc_et, MFMI_aicc_et_corr_hc,
          type = "html", 
          title = "Réplica análisis FMI - Modelo AICc con efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F,
          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), 
          dep.var.caption = "Variable dependiente")
Réplica análisis FMI - Modelo AICc con efectos fijos de tiempo
Variable dependiente
Tasa adquirencia Tasa adquirencia
MCO MCO HC
(1) (2)
Asia_Este 0.651*** 0.651***
(0.180) (0.127)
Cajero_Autom -0.002** -0.002*
(0.001) (0.001)
Concentracion_bancaria -0.009* -0.009
(0.005) (0.006)
Cuenta -0.015*** -0.015***
(0.004) (0.004)
Margen_neto 0.121*** 0.121***
(0.032) (0.025)
Valor_prom -0.006*** -0.006***
(0.002) (0.002)
Año_2014 0.206 0.206
(0.401) (0.373)
Año_2015 0.574 0.574
(0.384) (0.379)
Año_2016 0.372 0.372
(0.353) (0.440)
Año_2017 0.288 0.288
(0.347) (0.370)
Año_2018 0.295 0.295
(0.362) (0.406)
Año_2019 -0.157 -0.157
(0.365) (0.365)
Año_2020 -0.057 -0.057
(0.348) (0.330)
Año_2021 -0.005 -0.005
(0.375) (0.343)
Año_2022 0.356 0.356
(0.365) (0.498)
Año_2023 0.230 0.230
(0.382) (0.347)
Año_2024 0.059 0.059
(0.380) (0.351)
Año_2025 0.942** 0.942**
(0.470) (0.358)
Regulacion_intercambio -1.008*** -1.008***
(0.139) (0.178)
Constant 3.911*** 3.911***
(0.550) (0.577)
Observations 109
R2 0.771
Adjusted R2 0.722
Residual Std. Error 0.511 (df = 89)
F Statistic 15.771*** (df = 19; 89)
Note: p<0.1; p<0.05; p<0.01
4.2.9.3.2 Predicción
#Pronóstico para CR
pred_adq_MFMI_aicc_et <- predict(MFMI_aicc_et, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de adquirencia para Costa Rica: 1.6390637.

4.2.9.4 MFMI_bic_et

4.2.9.4.1 Estimación
# Ajustar el modelo
#modelo_completo_fmi_et <- lm(formula_con_cont_t_fmi, data = datos_fmi)
modelo_completo_fmi_et <- lm(Adquirencia ~ Regulacion_intercambio + Cajero_Autom + Cuenta 
                             + Valor_prom +Asia_Este + Margen_neto + 
                             Año_2014 + Año_2015 + Año_2016 + 
                             Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + 
                             Año_2022 + Año_2023 + Año_2024 + Año_2025, data = datos_fmi)

# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MFMI_bic_et <- dredge(modelo_completo_fmi_et, rank = "BIC", fixed = variables_fijas)

# Extraer el mejor modelo según AICc
MFMI_bic_et <- get.models(MFMI_bic_et, 1)[[1]]
MFMI_bic_et

Call: lm(formula = Adquirencia ~ Asia_Este + Cajero_Autom + Cuenta + Margen_neto + Valor_prom + 1 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + Año_2024 + Año_2025 + Regulacion_intercambio, data = datos_fmi)

Coefficients: (Intercept) Asia_Este Cajero_Autom
3.499628 0.678886 -0.002034
Cuenta Margen_neto Valor_prom
-0.016593 0.128516 -0.005777
Año_2014 Año_2015 Año_2016
0.146632 0.413012 0.262925
Año_2017 Año_2018 Año_2019
0.093963 0.150015 -0.304492
Año_2020 Año_2021 Año_2022
-0.179962 -0.165452 0.223720
Año_2023 Año_2024 Año_2025
0.090078 -0.106159 0.872043
Regulacion_intercambio
-0.917011

# Errores robustos
MFMI_bic_et_corr_hc <- coeftest(MFMI_bic_et, vcov. = vcovHC(MFMI_bic_et, "HC1", adjust = TRUE, sandwich = TRUE))

MFMI_bic_et_corr_hac <- coeftest(MFMI_bic_et, vcov. = vcovHAC(MFMI_bic_et, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(MFMI_bic_et, MFMI_bic_et_corr_hc,
          type = "html", 
          title = "Réplica análisis FMI - Modelo BIC con efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F,
          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), 
          dep.var.caption = "Variable dependiente")
Réplica análisis FMI - Modelo BIC con efectos fijos de tiempo
Variable dependiente
Tasa adquirencia Tasa adquirencia
MCO MCO HC
(1) (2)
Asia_Este 0.679*** 0.679***
(0.182) (0.129)
Cajero_Autom -0.002** -0.002*
(0.001) (0.001)
Cuenta -0.017*** -0.017***
(0.004) (0.003)
Margen_neto 0.129*** 0.129***
(0.033) (0.023)
Valor_prom -0.006*** -0.006***
(0.002) (0.002)
Año_2014 0.147 0.147
(0.406) (0.320)
Año_2015 0.413 0.413
(0.380) (0.299)
Año_2016 0.263 0.263
(0.352) (0.374)
Año_2017 0.094 0.094
(0.335) (0.280)
Año_2018 0.150 0.150
(0.358) (0.343)
Año_2019 -0.304 -0.304
(0.361) (0.291)
Año_2020 -0.180 -0.180
(0.346) (0.268)
Año_2021 -0.165 -0.165
(0.369) (0.267)
Año_2022 0.224 0.224
(0.363) (0.453)
Año_2023 0.090 0.090
(0.379) (0.280)
Año_2024 -0.106 -0.106
(0.375) (0.280)
Año_2025 0.872* 0.872**
(0.475) (0.403)
Regulacion_intercambio -0.917*** -0.917***
(0.132) (0.142)
Constant 3.500*** 3.500***
(0.510) (0.427)
Observations 109
R2 0.762
Adjusted R2 0.715
Residual Std. Error 0.518 (df = 90)
F Statistic 16.021*** (df = 18; 90)
Note: p<0.1; p<0.05; p<0.01
4.2.9.4.2 Predicción
#Pronóstico para CR
pred_adq_MFMI_bic_et <- predict(MFMI_bic_et, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de adquirencia para Costa Rica: 1.5906264.

4.2.10 Regresión con variables instrumentales

Una posible observación es que las comisiones de intercambio y adquirencia afectan la adopción de tarjetas de pago, y estas a su vez afectan las comisiones, lo que introduciría un sesgo de endogeneidad en las estimaciones. Para atender esta observación se recurre a dos enfoques.

El primer enfoque consiste en estimar la especificación principal, pero sin considerar como variables explicativas la información relativa directamente al uso de tarjetas.

Para el segundo enfoque, se plantea un modelo de variables instrumentales. En este caso, se instrumenta el valor promedio de la transacción realizada con tarjetas de pago con el Índice de Capital Humano.

4.2.10.1 Enfoque1: regresión sin variables relacionadas al uso de tarjetas

En esta regresión se estima la especificación principal, pero sin considerar como variables explicativas la información relativa directamente al uso de tarjetas. De esta manera, se excluye el porcentaje de adultos con tarjeta de crédito o débito, el porcentaje de adultos con cuenta en una institución financiera, el porcentaje de adultos que realizaron o recibieron un pago digital, el número de cajeros automáticos, y el valor de la transacción promedio realizada con tarjetas de pago.

4.2.10.1.1 MSVR_aicc
4.2.10.1.1.1 Estimación
# Ajustar el modelo
modelo_completo_red <- lm(formula_con_cont_red, data = datos_red)

# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MSVR_aicc <- dredge(modelo_completo_red, rank = "AICc", fixed = "Regulacion_intercambio")

# Extraer el mejor modelo según AICc
MSVR_aicc <- get.models(MSVR_aicc, 1)[[1]]
MSVR_aicc

Call: lm(formula = Adquirencia ~ Am_lat + Europa + ICH + 1 + Regulacion_intercambio, data = datos_red)

Coefficients: (Intercept) Am_lat Europa
3.9173 0.3925 -0.4340
ICH Regulacion_intercambio
-2.9934 -0.4721

# Errores robustos
MSVR_aicc_corr_hc <- coeftest(MSVR_aicc, vcov. = vcovHC(MSVR_aicc, "HC1", adjust = TRUE, sandwich = TRUE))

MSVR_aicc_corr_hac <- coeftest(MSVR_aicc, vcov. = vcovHAC(MSVR_aicc, adjust = TRUE, sandwich = TRUE)) 

# Visualización
stargazer(MSVR_aicc, MSVR_aicc_corr_hc,
          type = "html", 
          title = "Regresión sin variables relacionadas al uso de tarjetas - Modelo AICc sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F,
          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), 
          dep.var.caption = "Variable dependiente")
Regresión sin variables relacionadas al uso de tarjetas - Modelo AICc sin efectos fijos de tiempo
Variable dependiente
Tasa adquirencia Tasa adquirencia
MCO MCO HC
(1) (2)
Am_lat 0.393** 0.393***
(0.171) (0.146)
Europa -0.434*** -0.434***
(0.159) (0.124)
ICH -2.993*** -2.993***
(0.862) (0.825)
Regulacion_intercambio -0.472*** -0.472***
(0.141) (0.132)
Constant 3.917*** 3.917***
(0.587) (0.558)
Observations 118
R2 0.638
Adjusted R2 0.626
Residual Std. Error 0.585 (df = 113)
F Statistic 49.878*** (df = 4; 113)
Note: p<0.1; p<0.05; p<0.01
4.2.10.1.1.2 Predicción
#Pronóstico para CR
pred_adq_MSVR_aicc <- predict(MSVR_aicc, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de adquirencia para Costa Rica: 1.9559394.

4.2.10.1.2 MSVR_bic
4.2.10.1.2.1 Estimación
# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MSVR_bic <- dredge(modelo_completo_red, rank = "BIC", fixed = "Regulacion_intercambio")

# Extraer el mejor modelo según AICc
MSVR_bic <- get.models(MSVR_bic, 1)[[1]]
MSVR_bic

Call: lm(formula = Adquirencia ~ Am_lat + Europa + ICH + 1 + Regulacion_intercambio, data = datos_red)

Coefficients: (Intercept) Am_lat Europa
3.9173 0.3925 -0.4340
ICH Regulacion_intercambio
-2.9934 -0.4721

# Errores robustos
MSVR_bic_corr_hc <- coeftest(MSVR_bic, vcov. = vcovHC(MSVR_bic, "HC1", adjust = TRUE, sandwich = TRUE))

MSVR_bic_corr_hac <- coeftest(MSVR_bic, vcov. = vcovHAC(MSVR_bic, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(MSVR_bic, MSVR_bic_corr_hc,
          type = "html", 
          title = "Regresión sin variables relacionadas al uso de tarjetas - Modelo BIC  sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F,
          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), 
          dep.var.caption = "Variable dependiente")
Regresión sin variables relacionadas al uso de tarjetas - Modelo BIC sin efectos fijos de tiempo
Variable dependiente
Tasa adquirencia Tasa adquirencia
MCO MCO HC
(1) (2)
Am_lat 0.393** 0.393***
(0.171) (0.146)
Europa -0.434*** -0.434***
(0.159) (0.124)
ICH -2.993*** -2.993***
(0.862) (0.825)
Regulacion_intercambio -0.472*** -0.472***
(0.141) (0.132)
Constant 3.917*** 3.917***
(0.587) (0.558)
Observations 118
R2 0.638
Adjusted R2 0.626
Residual Std. Error 0.585 (df = 113)
F Statistic 49.878*** (df = 4; 113)
Note: p<0.1; p<0.05; p<0.01
4.2.10.1.2.2 Predicción
#Pronóstico para CR
pred_adq_MSVR_bic <- predict(MSVR_bic, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de adquirencia para Costa Rica: 1.9559394.

4.2.10.1.3 MSVR_aicc_et **
4.2.10.1.3.1 Estimación
# Ajustar el modelo
modelo_completo_et_red <- lm(formula_con_cont_t_red, data = datos_red)

# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MSVR_aicc_et <- dredge(modelo_completo_et_red, rank = "AICc", fixed = variables_fijas)

# Extraer el mejor modelo según AICc
MSVR_aicc_et <- get.models(MSVR_aicc_et, 1)[[1]]
MSVR_aicc_et

Call: lm(formula = Adquirencia ~ Am_lat + Europa + ICH + 1 + Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + Año_2024 + Año_2025 + Regulacion_intercambio, data = datos_red)

Coefficients: (Intercept) Am_lat Europa
4.291059 0.376970 -0.458485
ICH Año_2013 Año_2014
-3.442513 -0.025109 -0.419482
Año_2015 Año_2016 Año_2017
-0.086501 0.264036 -0.008185
Año_2018 Año_2019 Año_2020
-0.016188 -0.156977 -0.272460
Año_2021 Año_2022 Año_2023
-0.441175 -0.063757 -0.264772
Año_2024 Año_2025 Regulacion_intercambio
-0.442756 0.621312 -0.413448

# Errores robustos
MSVR_aicc_et_corr_hc<-coeftest(MSVR_aicc_et, vcov. = vcovHC(MSVR_aicc_et, "HC1", adjust = TRUE, sandwich = TRUE))

MSVR_aicc_et_corr_hac<-coeftest(MSVR_aicc_et, vcov. = vcovHAC(MSVR_aicc_et, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(MSVR_aicc_et, MSVR_aicc_et_corr_hc,
          type = "html", 
          title = "Regresión sin variables relacionadas al uso de tarjetas - Modelo AICc con efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F,
          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), 
          dep.var.caption = "Variable dependiente")
Regresión sin variables relacionadas al uso de tarjetas - Modelo AICc con efectos fijos de tiempo
Variable dependiente
Tasa adquirencia Tasa adquirencia
MCO MCO HC
(1) (2)
Am_lat 0.377** 0.377**
(0.175) (0.154)
Europa -0.458*** -0.458***
(0.172) (0.156)
ICH -3.443*** -3.443***
(0.919) (0.945)
Año_2013 -0.025 -0.025
(0.449) (0.338)
Año_2014 -0.419 -0.419**
(0.414) (0.190)
Año_2015 -0.087 -0.087
(0.396) (0.267)
Año_2016 0.264 0.264
(0.387) (0.309)
Año_2017 -0.008 -0.008
(0.376) (0.175)
Año_2018 -0.016 -0.016
(0.393) (0.213)
Año_2019 -0.157 -0.157
(0.394) (0.181)
Año_2020 -0.272 -0.272
(0.380) (0.177)
Año_2021 -0.441 -0.441***
(0.407) (0.165)
Año_2022 -0.064 -0.064
(0.404) (0.433)
Año_2023 -0.265 -0.265*
(0.417) (0.154)
Año_2024 -0.443 -0.443**
(0.415) (0.178)
Año_2025 0.621 0.621
(0.527) (0.409)
Regulacion_intercambio -0.413*** -0.413***
(0.149) (0.140)
Constant 4.291*** 4.291***
(0.679) (0.596)
Observations 118
R2 0.689
Adjusted R2 0.636
Residual Std. Error 0.577 (df = 100)
F Statistic 13.014*** (df = 17; 100)
Note: p<0.1; p<0.05; p<0.01
4.2.10.1.3.2 Predicción
#Pronóstico para CR
pred_adq_MSVR_aicc_et <- predict(MSVR_aicc_et, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de adquirencia para Costa Rica: 1.6477406.

4.2.10.1.4 MSVR_bic_et **
4.2.10.1.4.1 Estimación
# Esto es necesario para que dredge funcione correctamente
options(na.action = "na.fail")

#Generar todos los subconjuntos de modelos posibles
MSVR_bic_et <- dredge(modelo_completo_et_red, rank = "BIC", fixed = variables_fijas)

# Extraer el mejor modelo según AICc
MSVR_bic_et <- get.models(MSVR_bic_et, 1)[[1]]
MSVR_bic_et

Call: lm(formula = Adquirencia ~ Am_lat + Europa + ICH + 1 + Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + Año_2024 + Año_2025 + Regulacion_intercambio, data = datos_red)

Coefficients: (Intercept) Am_lat Europa
4.291059 0.376970 -0.458485
ICH Año_2013 Año_2014
-3.442513 -0.025109 -0.419482
Año_2015 Año_2016 Año_2017
-0.086501 0.264036 -0.008185
Año_2018 Año_2019 Año_2020
-0.016188 -0.156977 -0.272460
Año_2021 Año_2022 Año_2023
-0.441175 -0.063757 -0.264772
Año_2024 Año_2025 Regulacion_intercambio
-0.442756 0.621312 -0.413448

# Errores robustos
MSVR_bic_et_corr_hc <- coeftest(MSVR_bic_et, vcov. = vcovHC(MSVR_bic_et, "HC1", adjust = TRUE, sandwich = TRUE))

MSVR_bic_et_corr_hac <- coeftest(MSVR_bic_et, vcov. = vcovHAC(MSVR_bic_et, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(MSVR_bic_et, MSVR_bic_et_corr_hc,
          type = "html", 
          title = "Regresión con variables relacionadas al uso de tarjetas - Modelo BIC con efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F,
          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), 
          dep.var.caption = "Variable dependiente")
Regresión con variables relacionadas al uso de tarjetas - Modelo BIC con efectos fijos de tiempo
Variable dependiente
Tasa adquirencia Tasa adquirencia
MCO MCO HC
(1) (2)
Am_lat 0.377** 0.377**
(0.175) (0.154)
Europa -0.458*** -0.458***
(0.172) (0.156)
ICH -3.443*** -3.443***
(0.919) (0.945)
Año_2013 -0.025 -0.025
(0.449) (0.338)
Año_2014 -0.419 -0.419**
(0.414) (0.190)
Año_2015 -0.087 -0.087
(0.396) (0.267)
Año_2016 0.264 0.264
(0.387) (0.309)
Año_2017 -0.008 -0.008
(0.376) (0.175)
Año_2018 -0.016 -0.016
(0.393) (0.213)
Año_2019 -0.157 -0.157
(0.394) (0.181)
Año_2020 -0.272 -0.272
(0.380) (0.177)
Año_2021 -0.441 -0.441***
(0.407) (0.165)
Año_2022 -0.064 -0.064
(0.404) (0.433)
Año_2023 -0.265 -0.265*
(0.417) (0.154)
Año_2024 -0.443 -0.443**
(0.415) (0.178)
Año_2025 0.621 0.621
(0.527) (0.409)
Regulacion_intercambio -0.413*** -0.413***
(0.149) (0.140)
Constant 4.291*** 4.291***
(0.679) (0.596)
Observations 118
R2 0.689
Adjusted R2 0.636
Residual Std. Error 0.577 (df = 100)
F Statistic 13.014*** (df = 17; 100)
Note: p<0.1; p<0.05; p<0.01
4.2.10.1.4.2 Predicción
#Pronóstico para CR
pred_adq_MSVR_bic_et <- predict(MSVR_bic_et, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

Predicción tasa de adquirencia para Costa Rica: 1.6477406.

4.2.10.2 Enfoque2: modelo con variables instrumentales

Para el segundo enfoque, se plantea un modelo de variables instrumentales. En este caso, se instrumenta el valor promedio de la transacción realizada con tarjetas de pago con el Índice de Capital Humano. Este índice incorpora una medición del nivel educativo de un país, que es una característica del cliente que puede estar relacionada con su disposición a adoptar y utilizar tecnologías de pago distintas al efectivo.

Dado que esta característica impacta el lado de la demanda, es posible utilizar el índice como un instrumento para trazar la oferta.

4.2.10.2.1 Modelo sin efectos de tiempo
4.2.10.2.1.1 Estimación
#Regresión
modelo_vi <- ivreg(formula_vi,data = datos_vi)
modelo_vi

Call: ivreg(formula = formula_vi, data = datos_vi)

Coefficients: (Intercept) Regulacion_intercambio Crimen
8.381e-01 -4.674e-01 4.101e-05
Densidad_Pob Densidad_Neg PIB_pc_PPA
-3.488e-04 3.865e-02 -3.594e-06
Europa Asia_Este Am_lat
-3.539e-01 -3.813e-01 8.703e-01
Valor_prom
1.204e-02

# Errores robustos
modelo_vi_corr_hc <- coeftest(modelo_vi, vcov. = vcovHC(modelo_vi, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_vi_corr_hac <- coeftest(modelo_vi, vcov. = vcovHAC(modelo_vi, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(modelo_vi, modelo_vi_corr_hc, type = "html", 
          title = "Regresión con variables instrumentales - Sin efectos fijos de tiempo", 
          column.labels = c("Instrumental","Instrumental HC"), model.names = F, 
          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), 
          dep.var.caption = "Variable dependiente")
Regresión con variables instrumentales - Sin efectos fijos de tiempo
Variable dependiente
Tasa adquirencia Tasa adquirencia
Instrumental Instrumental HC
(1) (2)
Regulacion_intercambio -0.467** -0.467*
(0.200) (0.244)
Crimen 0.00004 0.00004
(0.0001) (0.0001)
Densidad_Pob -0.0003 -0.0003
(0.001) (0.001)
Densidad_Neg 0.039 0.039
(0.027) (0.029)
PIB_pc_PPA -0.00000 -0.00000
(0.00001) (0.00000)
Europa -0.354 -0.354
(0.483) (0.445)
Asia_Este -0.381 -0.381
(0.465) (0.595)
Am_lat 0.870* 0.870
(0.511) (0.524)
Valor_prom 0.012 0.012
(0.008) (0.010)
Constant 0.838 0.838
(1.119) (1.257)
Observations 110
R2 0.515
Adjusted R2 0.472
Residual Std. Error 0.705 (df = 100)
Note: p<0.1; p<0.05; p<0.01
4.2.10.2.1.2 Predicción
#Pronósticos para Costa Rica
pred_adq_vi <- predict(modelo_vi, newdata = data_CR,
                                   interval = "prediction", level = 0.95,
                                   type = "response")[which(data_CR$Codigo_Pais=="CRI")]

Predicción tasa de adquirencia para Costa Rica: 1.8855473.

4.2.10.2.2 Modelo con efectos de tiempo
4.2.10.2.2.1 Estimación
#Regresión
modelo_vi_et <- ivreg(formula_vi_et,data = datos_vi)
modelo_vi_et

Call: ivreg(formula = formula_vi_et, data = datos_vi)

Coefficients: (Intercept) Regulacion_intercambio Crimen
1.688e+00 -3.577e-01 4.141e-05
Densidad_Pob Densidad_Neg PIB_pc_PPA
-4.841e-04 3.764e-02 -3.267e-06
Europa Asia_Este Am_lat
-5.956e-01 -5.707e-01 7.053e-01
Valor_prom Año_2012 Año_2013
1.107e-02 -2.654e-01 2.754e-02
Año_2014 Año_2015 Año_2016
-8.414e-01 -5.235e-01 -3.359e-01
Año_2017 Año_2018 Año_2019
-6.616e-01 -7.298e-01 -6.777e-01
Año_2020 Año_2021 Año_2022
-8.669e-01 -9.849e-01 -5.614e-01
Año_2023 Año_2024 Año_2025
-5.925e-01 -9.739e-01 NA

# Errores robustos
modelo_vi_et_corr_hc <- coeftest(modelo_vi_et, vcov. = vcovHC(modelo_vi_et, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_vi_et_corr_hac <- coeftest(modelo_vi_et, vcov. = vcovHAC(modelo_vi_et, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(modelo_vi_et, modelo_vi_et_corr_hc, type = "html", 
          title = "Regresión con variables instrumentales - Con efectos fijos de tiempo", 
          column.labels = c("Instrumental","Instrumental HC"), model.names = F, 
          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), 
          dep.var.caption = "Variable dependiente")
Regresión con variables instrumentales - Con efectos fijos de tiempo
Variable dependiente
Tasa adquirencia Tasa adquirencia
Instrumental Instrumental HC
(1) (2)
Regulacion_intercambio -0.358 -0.358
(0.220) (0.269)
Crimen 0.00004 0.00004
(0.0001) (0.0001)
Densidad_Pob -0.0005 -0.0005
(0.001) (0.001)
Densidad_Neg 0.038 0.038
(0.026) (0.027)
PIB_pc_PPA -0.00000 -0.00000
(0.00001) (0.00000)
Europa -0.596 -0.596
(0.501) (0.425)
Asia_Este -0.571 -0.571
(0.484) (0.582)
Am_lat 0.705 0.705
(0.511) (0.499)
Valor_prom 0.011 0.011
(0.007) (0.009)
Año_2012 -0.265 -0.265
(0.880) (0.782)
Año_2013 0.028 0.028
(0.677) (0.794)
Año_2014 -0.841 -0.841
(0.613) (0.815)
Año_2015 -0.523 -0.523
(0.582) (0.782)
Año_2016 -0.336 -0.336
(0.548) (0.829)
Año_2017 -0.662 -0.662
(0.541) (0.773)
Año_2018 -0.730 -0.730
(0.556) (0.780)
Año_2019 -0.678 -0.678
(0.562) (0.781)
Año_2020 -0.867 -0.867
(0.545) (0.765)
Año_2021 -0.985* -0.985
(0.573) (0.777)
Año_2022 -0.561 -0.561
(0.573) (0.917)
Año_2023 -0.593 -0.593
(0.600) (0.789)
Año_2024 -0.974* -0.974
(0.583) (0.784)
Año_2025
Constant 1.688 1.688
(1.206) (1.408)
Observations 110
R2 0.587
Adjusted R2 0.482
Residual Std. Error 0.698 (df = 87)
Note: p<0.1; p<0.05; p<0.01
4.2.10.2.2.2 Predicción
#Pronósticos para Costa Rica
pred_adq_vi_et <- predict(modelo_vi_et, newdata = data_CR,
                                   interval = "prediction", level = 0.95,
                                   type = "response")[which(data_CR$Codigo_Pais=="CRI")]

Predicción tasa de adquirencia para Costa Rica: 1.6566054.

4.2.11 Modelo de panel de datos con efectos aleatorios

La base de datos recopilada para este estudio contiene para algunos países el seguimiento del comportamiento de las comisiones de adquirencia e intercambio a lo largo del tiempo. Este seguimiento, sin embargo, es limitado. Para el 74% de los países se disponen como máximo de dos observaciones. No obstante, es posible considerar en el presente análisis de sensibilidad un modelo de datos de panel que permita explorar el papel de la heterogeneidad no observable en los resultados.

Para este ejercicio, se utiliza un modelo de efectos aleatorios. Esto ya que Costa Rica no se incluye en la estimación del modelo, sino hasta que se realiza el pronóstico, lo que hace poco práctico un modelo de efectos fijos si el objetivo final del modelo es obtener valores esperados de las comisiones para Costa Rica.

4.2.11.1 MPDEA_aicc

4.2.11.1.1 Estimación
# Modelo completo
modelo_completo_panel <- lm(formula_con_cont, data = datos_adq_con_cont_panel)

# Selección hacia atrás con AICc, fijando Regulacion_intercambio
MPDEA_aicc <- dredge(modelo_completo_panel, fixed = "Regulacion_intercambio", rank = "AICc")

# Extraer el mejor modelo
MPDEA_aicc <- get.models(MPDEA_aicc, 3)[[1]] #Ranking=3

# Ver variables seleccionadas
var_panel <- names(coef(MPDEA_aicc))[-1]  # excluye intercepto
var_panel <- var_panel[var_panel != "Regulacion_intercambio"]

# Fórmula para lmer
formula_lmer <- as.formula(paste("Adquirencia ~ Regulacion_intercambio +", paste(var_panel, collapse = " + "), " + (1 | Codigo_Pais)" ))

#Regresión con efectos aleatorios y errores agrupados
MPDEA_aicc <- lmer(formula_lmer, data = pdata)

resultado_panel_aicc <- summary(MPDEA_aicc)

summary(MPDEA_aicc)
## Linear mixed model fit by REML ['lmerMod']
## Formula: 
## Adquirencia ~ Regulacion_intercambio + Am_lat + Asia_Este + Cajero_Autom +  
##     Cuenta + Valor_prom + (1 | Codigo_Pais)
##    Data: pdata
## 
## REML criterion at convergence: 143.3
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -3.9718 -0.3085 -0.0602  0.2507  2.9680 
## 
## Random effects:
##  Groups      Name        Variance Std.Dev.
##  Codigo_Pais (Intercept) 0.27086  0.5204  
##  Residual                0.08341  0.2888  
## Number of obs: 109, groups:  Codigo_Pais, 38
## 
## Fixed effects:
##                          Estimate Std. Error t value
## (Intercept)             3.1437810  0.5474994   5.742
## Regulacion_intercambio -0.6985864  0.1468466  -4.757
## Am_lat                  0.6498244  0.2598460   2.501
## Asia_Este               0.4510120  0.3612041   1.249
## Cajero_Autom           -0.0009536  0.0015163  -0.629
## Cuenta                 -0.0150762  0.0045597  -3.306
## Valor_prom             -0.0007653  0.0027569  -0.278
## 
## Correlation of Fixed Effects:
##             (Intr) Rglcn_ Am_lat As_Est Cjr_At Cuenta
## Rglcn_ntrcm -0.228                                   
## Am_lat      -0.518  0.257                            
## Asia_Este    0.166  0.032  0.137                     
## Cajero_Autm -0.202  0.095 -0.154 -0.323              
## Cuenta      -0.810 -0.137  0.444 -0.121 -0.145       
## Valor_prom  -0.771  0.226  0.223 -0.238  0.218  0.424
4.2.11.1.2 Predicción
#Nombre de variables
var_finales <- attr(terms(MPDEA_aicc), "term.labels")

#Pronóstico
Caso_CR <- datos %>% filter(Codigo_Pais=="CRI") %>% dplyr::select(var_finales)
Caso_CR <- cbind(1,Caso_CR) # agregar un 1 para que se multiple con el intercepto general

pred_adq_MPDEA_aicc <- sum(resultado_panel_aicc$coefficients*Caso_CR)

Predicción tasa de adquirencia para Costa Rica: 1.927513.

4.2.11.2 MPDEA_bic

4.2.11.2.1 Estimación
# Selección hacia atrás con AICc, fijando Regulacion_intercambio
MPDEA_bic <- dredge(modelo_completo_panel, fixed = "Regulacion_intercambio", rank = "BIC")

# Extraer el mejor modelo
MPDEA_bic <- get.models(MPDEA_bic, 20)[[1]] #Ranking=20

# Ver variables seleccionadas
var_panel <- names(coef(MPDEA_bic))[-1]  # excluye intercepto
var_panel <- var_panel[var_panel != "Regulacion_intercambio"]

# Fórmula para lmer
formula_lmer <- as.formula(paste("Adquirencia ~ Regulacion_intercambio +", paste(var_panel, collapse = " + "), " + (1 | Codigo_Pais)" ))

#Regresión con efectos aleatorios y errores agrupados
# Modelo de efectos aleatorios
MPDEA_bic <- lmer(formula_lmer, data = pdata)

# Resumen con errores agrupados por id
resultado_panel_bic <- summary(MPDEA_bic)

summary(MPDEA_bic)
## Linear mixed model fit by REML ['lmerMod']
## Formula: 
## Adquirencia ~ Regulacion_intercambio + Am_lat + Asia_Este + Cajero_Autom +  
##     Cuenta + Valor_prom + (1 | Codigo_Pais)
##    Data: pdata
## 
## REML criterion at convergence: 143.3
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -3.9718 -0.3085 -0.0602  0.2507  2.9680 
## 
## Random effects:
##  Groups      Name        Variance Std.Dev.
##  Codigo_Pais (Intercept) 0.27086  0.5204  
##  Residual                0.08341  0.2888  
## Number of obs: 109, groups:  Codigo_Pais, 38
## 
## Fixed effects:
##                          Estimate Std. Error t value
## (Intercept)             3.1437810  0.5474994   5.742
## Regulacion_intercambio -0.6985864  0.1468466  -4.757
## Am_lat                  0.6498244  0.2598460   2.501
## Asia_Este               0.4510120  0.3612041   1.249
## Cajero_Autom           -0.0009536  0.0015163  -0.629
## Cuenta                 -0.0150762  0.0045597  -3.306
## Valor_prom             -0.0007653  0.0027569  -0.278
## 
## Correlation of Fixed Effects:
##             (Intr) Rglcn_ Am_lat As_Est Cjr_At Cuenta
## Rglcn_ntrcm -0.228                                   
## Am_lat      -0.518  0.257                            
## Asia_Este    0.166  0.032  0.137                     
## Cajero_Autm -0.202  0.095 -0.154 -0.323              
## Cuenta      -0.810 -0.137  0.444 -0.121 -0.145       
## Valor_prom  -0.771  0.226  0.223 -0.238  0.218  0.424
4.2.11.2.2 Predicción
#Nombre de variables
var_finales <- attr(terms(MPDEA_bic), "term.labels")

#Pronóstico
Caso_CR <- datos %>% filter(Codigo_Pais=="CRI") %>% dplyr::select(var_finales)
Caso_CR <- cbind(1,Caso_CR) # agregar un 1 para que se multiple con el intercepto general

pred_adq_MPDEA_bic <- sum(resultado_panel_bic$coefficients*Caso_CR)

Predicción tasa de adquirencia para Costa Rica: 1.927513.

4.2.11.3 MPDEA_aicc_et **

4.2.11.3.1 Estimación
# Modelo completo
modelo_completo_panel_et <- lm(formula_con_cont_t, data = datos_adq_con_cont_panel)

# Selección hacia atrás con AICc, fijando Regulacion_intercambio
MPDEA_aicc_et <- dredge(modelo_completo_panel_et, fixed = variables_fijas, rank = "AICc")

# Extraer el mejor modelo
MPDEA_aicc_et <- get.models(MPDEA_aicc_et, 11)[[1]] #Ranking=11

# Ver variables seleccionadas
coef_original <- coef(MPDEA_aicc_et)
coef_sin_na <- coef_original[!is.na(coef_original)]
var_panel <- names(coef_sin_na)
var_panel <- var_panel[var_panel != "(Intercept)"] # excluye intercepto
var_panel <- var_panel[var_panel != "Regulacion_intercambio"] 

# Fórmula para lmer
formula_lmer <- as.formula(paste("Adquirencia ~ Regulacion_intercambio +", paste(var_panel, collapse = " + "), " + (1 | Codigo_Pais)" ))

#Regresión con efectos aleatorios y errores agrupados
MPDEA_aicc_et <- lmer(formula_lmer, data = pdata)

# Resumen con errores agrupados por id
resultado_panel_aicc_et <- summary(MPDEA_aicc_et)

summary(MPDEA_aicc_et)
## Linear mixed model fit by REML ['lmerMod']
## Formula: Adquirencia ~ Regulacion_intercambio + Am_lat + Asia_Este + Cuenta +  
##     ICH + Valor_prom + Año_2013 + Año_2014 + Año_2015 + Año_2016 +  
##     Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 +  
##     Año_2022 + Año_2023 + Año_2024 + (1 | Codigo_Pais)
##    Data: pdata
## 
## REML criterion at convergence: 129.1
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -3.1939 -0.3058 -0.0521  0.3783  3.3776 
## 
## Random effects:
##  Groups      Name        Variance Std.Dev.
##  Codigo_Pais (Intercept) 0.29700  0.5450  
##  Residual                0.06521  0.2554  
## Number of obs: 109, groups:  Codigo_Pais, 38
## 
## Fixed effects:
##                         Estimate Std. Error t value
## (Intercept)             4.209437   1.162608   3.621
## Regulacion_intercambio -0.535638   0.154101  -3.476
## Am_lat                  0.597083   0.292723   2.040
## Asia_Este               0.396046   0.362683   1.092
## Cuenta                 -0.011001   0.005915  -1.860
## ICH                    -1.632013   1.737643  -0.939
## Valor_prom             -0.001079   0.003021  -0.357
## Año_2013                0.045570   0.287788   0.158
## Año_2014               -0.408794   0.250366  -1.633
## Año_2015               -0.319271   0.243548  -1.311
## Año_2016               -0.179211   0.232800  -0.770
## Año_2017               -0.415663   0.233229  -1.782
## Año_2018               -0.391252   0.231825  -1.688
## Año_2019               -0.554609   0.230118  -2.410
## Año_2020               -0.661240   0.217249  -3.044
## Año_2021               -0.555594   0.222989  -2.492
## Año_2022               -0.365369   0.216731  -1.686
## Año_2023               -0.446381   0.232133  -1.923
## Año_2024               -0.516124   0.226192  -2.282
4.2.11.3.2 Predicción
#Nombre de variables
var_finales <- attr(terms(MPDEA_aicc_et), "term.labels")

#Pronóstico
Caso_CR <- datos %>% filter(Codigo_Pais=="CRI") %>% dplyr::select(var_finales)
Caso_CR<-cbind(1,Caso_CR) # agregar un 1 para que se multiple con el intercepto general

pred_adq_MPDEA_aicc_et <- sum(resultado_panel_aicc_et$coefficients*Caso_CR)

Predicción tasa de adquirencia para Costa Rica: 1.8992411.

4.2.11.4 MPDEA_bic_et **

4.2.11.4.1 Estimación
# Selección hacia atrás con AICc, fijando Regulacion_intercambio
MPDEA_bic_et <- dredge(modelo_completo_panel_et, fixed = variables_fijas, rank = "BIC")

# Extraer el mejor modelo
MPDEA_bic_et <- get.models(MPDEA_bic_et, 10)[[1]] #Ranking=10

# Ver variables seleccionadas
coef_original <- coef(MPDEA_bic_et)
coef_sin_na <- coef_original[!is.na(coef_original)]
var_panel <- names(coef_sin_na)
var_panel <- var_panel[var_panel != "(Intercept)"] # excluye intercepto
var_panel <- var_panel[var_panel != "Regulacion_intercambio"] 

# Fórmula para lmer
formula_lmer <- as.formula(paste("Adquirencia ~ Regulacion_intercambio +", paste(var_panel, collapse = " + "), " + (1 | Codigo_Pais)" ))

#Regresión con efectos aleatorios y errores agrupados
MPDEA_bic_et <- lmer(formula_lmer, data = pdata)

# Resumen con errores agrupados por id
resultado_panel_bic_et <- summary(MPDEA_bic_et)

summary(MPDEA_bic_et)
## Linear mixed model fit by REML ['lmerMod']
## Formula: Adquirencia ~ Regulacion_intercambio + Asia_Este + Cuenta + ICH +  
##     Valor_prom + Año_2013 + Año_2014 + Año_2015 + Año_2016 +  
##     Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 +  
##     Año_2022 + Año_2023 + Año_2024 + (1 | Codigo_Pais)
##    Data: pdata
## 
## REML criterion at convergence: 132.6
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -3.0279 -0.3328 -0.0531  0.3731  3.2556 
## 
## Random effects:
##  Groups      Name        Variance Std.Dev.
##  Codigo_Pais (Intercept) 0.31693  0.5630  
##  Residual                0.06651  0.2579  
## Number of obs: 109, groups:  Codigo_Pais, 38
## 
## Fixed effects:
##                         Estimate Std. Error t value
## (Intercept)             5.587568   0.971886   5.749
## Regulacion_intercambio -0.589682   0.153674  -3.837
## Asia_Este               0.361723   0.373272   0.969
## Cuenta                 -0.012797   0.005965  -2.145
## ICH                    -2.906342   1.662899  -1.748
## Valor_prom             -0.003248   0.002910  -1.116
## Año_2013               -0.015654   0.289201  -0.054
## Año_2014               -0.434512   0.252712  -1.719
## Año_2015               -0.339433   0.246064  -1.379
## Año_2016               -0.151603   0.235262  -0.644
## Año_2017               -0.422151   0.235957  -1.789
## Año_2018               -0.389319   0.234488  -1.660
## Año_2019               -0.555316   0.232692  -2.386
## Año_2020               -0.663121   0.219534  -3.021
## Año_2021               -0.546960   0.225238  -2.428
## Año_2022               -0.361781   0.218929  -1.653
## Año_2023               -0.449805   0.234502  -1.918
## Año_2024               -0.509920   0.228494  -2.232
4.2.11.4.2 Predicción
#Nombre de variables
var_finales <- attr(terms(MPDEA_bic_et), "term.labels")

#Pronóstico
Caso_CR <- datos %>% filter(Codigo_Pais=="CRI") %>% dplyr::select(var_finales)
Caso_CR<-cbind(1,Caso_CR) # agregar un 1 para que se multiple con el intercepto general

pred_adq_MPDEA_bic_et <- sum(resultado_panel_bic_et$coefficients*Caso_CR)

Predicción tasa de adquirencia para Costa Rica: 1.6135305.

4.3 Estimación de las comisiones de adquirencia

Posterior a la etapa de modelación, se realiza un pronóstico para conocer la tasa de adquirencia esperada para Costa Rica. A continuación, se calcula un promedio para los valores esperados de cada modelo estimado.

Pronosticos$Tipo_modelo <- Pronosticos$Modelo

Pronosticos <- Pronosticos %>%
  separate(Tipo_modelo, into = c("Tipo_modelo", "Especificacion"), sep = "-")

Pronosticos$Pronostico_ajustado <- (Pronosticos$Pronostico - (1*0.09) - (1.25*0.06) - (1.5*0.07) - (1.75*0.15))/(0.63)


Pronosticos_resumen <- Pronosticos[-1, ] %>%
  group_by(Tipo_modelo) %>%
  summarise(promedio = mean(Pronostico_ajustado, na.rm = TRUE))

print(Pronosticos_resumen)
## # A tibble: 13 × 2
##    Tipo_modelo                                                promedio
##    <chr>                                                         <dbl>
##  1 "Estimación ampliando definición de regulación "              2.29 
##  2 "Estimación con efectos aleatorios "                          2.08 
##  3 "Estimación con efectos no lineales "                         2.78 
##  4 "Estimación con transformación logarítmica "                  0.173
##  5 "Estimación principal "                                       1.77 
##  6 "Estimación restringiendo muestra a países regulados "        2.40 
##  7 "Estimación truncada en 0 "                                   1.70 
##  8 "Estimación truncada en 0.33 "                                1.52 
##  9 "Estimación usando características más recientes "            2.47 
## 10 "Regresión con variables instrumentales "                     1.97 
## 11 "Regresión robusta "                                          1.88 
## 12 "Regresión sin variables relacionadas al uso de tarjetas "    2.01 
## 13 "Réplica análisis FMI "                                       1.82
promedio_adquirencia_CR <- Pronosticos_resumen %>%
                            filter(Tipo_modelo == "Estimación principal ") %>%
                            pull(promedio)

Pronosticos_resumen_adquirencia <- Pronosticos_resumen

En promedio, la tasa de adquirencia estimada para Costa Rica es: 1.774276.